[FIR IDE] Fix loop inheritance tests

This commit is contained in:
Igor Yakovlev
2021-06-09 19:21:53 +02:00
parent 3a1057eb60
commit 8012429e31
13 changed files with 184 additions and 174 deletions
@@ -1,3 +1,4 @@
// FIR_IDE_IGNORE
// FILE: I.kt
open class I : K() {
@@ -1,3 +1,4 @@
// FIR_IDE_IGNORE
// FILE: I.kt
open class I : <!CYCLIC_INHERITANCE_HIERARCHY!>K<!>() {
@@ -1,3 +1,4 @@
// FIR_IDE_IGNORE
typealias R = <!RECURSIVE_TYPEALIAS_EXPANSION!>R<!>
typealias L = <!RECURSIVE_TYPEALIAS_EXPANSION!>List<L><!>
@@ -1,3 +1,4 @@
// FIR_IDE_IGNORE
typealias R = <!RECURSIVE_TYPEALIAS_EXPANSION!>R<!>
typealias L = <!RECURSIVE_TYPEALIAS_EXPANSION!>List<L><!>
@@ -1,3 +1,4 @@
RAW_FIR:
FILE: localDeclaration.kt
public? final? class A : R|kotlin/Any| {
@@ -27,14 +28,14 @@ FILE: localDeclaration.kt
super<R|kotlin/Any|>()
}
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun x(): R|kotlin/Unit| {
local final? [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public? [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final val e: R|kotlin/Int| = Int(2)
[ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
public? final? val e: <implicit> = IntegerLiteral(2)
[ContainingClassKey=resolveMe] public? get(): <implicit>
}
@@ -49,14 +50,14 @@ FILE: localDeclaration.kt
super<R|kotlin/Any|>()
}
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun x(): R|kotlin/Unit| {
local final? [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public? [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final val e: R|kotlin/Int| = Int(2)
[ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
public? final? val e: <implicit> = IntegerLiteral(2)
[ContainingClassKey=resolveMe] public? get(): <implicit>
}
@@ -71,14 +72,14 @@ FILE: localDeclaration.kt
super<R|kotlin/Any|>()
}
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun x(): R|kotlin/Unit| {
local final? [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public? [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final val e: R|kotlin/Int| = Int(2)
[ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
public? final? val e: <implicit> = IntegerLiteral(2)
[ContainingClassKey=resolveMe] public? get(): <implicit>
}
@@ -93,14 +94,14 @@ FILE: localDeclaration.kt
super<R|kotlin/Any|>()
}
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun x(): R|kotlin/Unit| {
local final? [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public? [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final val e: R|kotlin/Int| = Int(2)
[ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
public? final? val e: <implicit> = IntegerLiteral(2)
[ContainingClassKey=resolveMe] public? get(): <implicit>
}
@@ -115,14 +116,14 @@ FILE: localDeclaration.kt
super<R|kotlin/Any|>()
}
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun x(): R|kotlin/Unit| {
local final? [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public? [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final val e: R|kotlin/Int| = Int(2)
[ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
public? final? val e: <implicit> = IntegerLiteral(2)
[ContainingClassKey=resolveMe] public? get(): <implicit>
}
@@ -137,14 +138,14 @@ FILE: localDeclaration.kt
super<R|kotlin/Any|>()
}
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final? [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public? [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final val e: R|kotlin/Int| = Int(2)
[ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
public? final? val e: <implicit> = IntegerLiteral(2)
[ContainingClassKey=resolveMe] public? get(): <implicit>
}
@@ -225,14 +226,14 @@ FILE: localDeclaration.kt
super<R|kotlin/Any|>()
}
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun x(): R|kotlin/Unit| {
local final? [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public? [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final val e: R|kotlin/Int| = Int(2)
[ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
public? final? val e: <implicit> = IntegerLiteral(2)
[ContainingClassKey=resolveMe] public? get(): <implicit>
}
@@ -269,14 +270,14 @@ FILE: localDeclaration.kt
super<R|kotlin/Any|>()
}
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun x(): R|kotlin/Unit| {
local final? [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public? [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final val e: R|kotlin/Int| = Int(2)
[ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
public? final? val e: <implicit> = IntegerLiteral(2)
[ContainingClassKey=resolveMe] public? get(): <implicit>
}
@@ -291,14 +292,14 @@ FILE: localDeclaration.kt
super<R|kotlin/Any|>()
}
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun x(): R|kotlin/Unit| {
local final? [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public? [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final val e: R|kotlin/Int| = Int(2)
[ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
public? final? val e: <implicit> = IntegerLiteral(2)
[ContainingClassKey=resolveMe] public? get(): <implicit>
}
@@ -313,14 +314,14 @@ FILE: localDeclaration.kt
super<R|kotlin/Any|>()
}
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun x(): R|kotlin/Unit| {
local final? [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public? [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final val e: R|kotlin/Int| = Int(2)
[ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
public? final? val e: <implicit> = IntegerLiteral(2)
[ContainingClassKey=resolveMe] public? get(): <implicit>
}
@@ -335,14 +336,14 @@ FILE: localDeclaration.kt
super<R|kotlin/Any|>()
}
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun x(): R|kotlin/Unit| {
local final? [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public? [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final val e: R|kotlin/Int| = Int(2)
[ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
public? final? val e: <implicit> = IntegerLiteral(2)
[ContainingClassKey=resolveMe] public? get(): <implicit>
}
@@ -18,16 +18,16 @@ FILE: parameterOfLocalSetter.kt
IMPORTS:
FILE: parameterOfLocalSetter.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final class XX : R|kotlin/Any| {
public [ContainingClassKey=XX] constructor(): R|XX| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? class XX : R|kotlin/Any| {
public? [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final var x: R|kotlin/Int| = Int(2)
[ContainingClassKey=XX] public get(): R|kotlin/Int|
[ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
public? final? var x: Int = IntegerLiteral(2)
[ContainingClassKey=XX] public? get(): Int
[ContainingClassKey=XX] public? set(resolveMe: Int): R|kotlin/Unit| {
^ Unit#
}
}
@@ -36,16 +36,16 @@ FILE: parameterOfLocalSetter.kt
SUPER_TYPES:
FILE: parameterOfLocalSetter.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final class XX : R|kotlin/Any| {
public [ContainingClassKey=XX] constructor(): R|XX| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? class XX : R|kotlin/Any| {
public? [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final var x: R|kotlin/Int| = Int(2)
[ContainingClassKey=XX] public get(): R|kotlin/Int|
[ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
public? final? var x: Int = IntegerLiteral(2)
[ContainingClassKey=XX] public? get(): Int
[ContainingClassKey=XX] public? set(resolveMe: Int): R|kotlin/Unit| {
^ Unit#
}
}
@@ -54,16 +54,16 @@ FILE: parameterOfLocalSetter.kt
TYPES:
FILE: parameterOfLocalSetter.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final class XX : R|kotlin/Any| {
public [ContainingClassKey=XX] constructor(): R|XX| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? class XX : R|kotlin/Any| {
public? [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final var x: R|kotlin/Int| = Int(2)
[ContainingClassKey=XX] public get(): R|kotlin/Int|
[ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
public? final? var x: Int = IntegerLiteral(2)
[ContainingClassKey=XX] public? get(): Int
[ContainingClassKey=XX] public? set(resolveMe: Int): R|kotlin/Unit| {
^ Unit#
}
}
@@ -72,16 +72,16 @@ FILE: parameterOfLocalSetter.kt
STATUS:
FILE: parameterOfLocalSetter.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final class XX : R|kotlin/Any| {
public [ContainingClassKey=XX] constructor(): R|XX| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? class XX : R|kotlin/Any| {
public? [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final var x: R|kotlin/Int| = Int(2)
[ContainingClassKey=XX] public get(): R|kotlin/Int|
[ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
public? final? var x: Int = IntegerLiteral(2)
[ContainingClassKey=XX] public? get(): Int
[ContainingClassKey=XX] public? set(resolveMe: Int): R|kotlin/Unit| {
^ Unit#
}
}
@@ -216,16 +216,16 @@ FILE: parameterOfLocalSetter.kt
AnnotationType:
FILE: parameterOfLocalSetter.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final class XX : R|kotlin/Any| {
public [ContainingClassKey=XX] constructor(): R|XX| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? class XX : R|kotlin/Any| {
public? [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final var x: R|kotlin/Int| = Int(2)
[ContainingClassKey=XX] public get(): R|kotlin/Int|
[ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
public? final? var x: Int = IntegerLiteral(2)
[ContainingClassKey=XX] public? get(): Int
[ContainingClassKey=XX] public? set(resolveMe: Int): R|kotlin/Unit| {
^ Unit#
}
}
@@ -270,16 +270,16 @@ FILE: parameterOfLocalSetter.kt
DeclarationStatus:
FILE: parameterOfLocalSetter.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final class XX : R|kotlin/Any| {
public [ContainingClassKey=XX] constructor(): R|XX| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? class XX : R|kotlin/Any| {
public? [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final var x: R|kotlin/Int| = Int(2)
[ContainingClassKey=XX] public get(): R|kotlin/Int|
[ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
public? final? var x: Int = IntegerLiteral(2)
[ContainingClassKey=XX] public? get(): Int
[ContainingClassKey=XX] public? set(resolveMe: Int): R|kotlin/Unit| {
^ Unit#
}
}
@@ -288,16 +288,16 @@ FILE: parameterOfLocalSetter.kt
ValueParametersTypes:
FILE: parameterOfLocalSetter.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final class XX : R|kotlin/Any| {
public [ContainingClassKey=XX] constructor(): R|XX| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? class XX : R|kotlin/Any| {
public? [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final var x: R|kotlin/Int| = Int(2)
[ContainingClassKey=XX] public get(): R|kotlin/Int|
[ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
public? final? var x: Int = IntegerLiteral(2)
[ContainingClassKey=XX] public? get(): Int
[ContainingClassKey=XX] public? set(resolveMe: Int): R|kotlin/Unit| {
^ Unit#
}
}
@@ -306,16 +306,16 @@ FILE: parameterOfLocalSetter.kt
TypeParametersTypes:
FILE: parameterOfLocalSetter.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final class XX : R|kotlin/Any| {
public [ContainingClassKey=XX] constructor(): R|XX| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? class XX : R|kotlin/Any| {
public? [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final var x: R|kotlin/Int| = Int(2)
[ContainingClassKey=XX] public get(): R|kotlin/Int|
[ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
public? final? var x: Int = IntegerLiteral(2)
[ContainingClassKey=XX] public? get(): Int
[ContainingClassKey=XX] public? set(resolveMe: Int): R|kotlin/Unit| {
^ Unit#
}
}
@@ -63,7 +63,7 @@ FILE: superTypes.kt
TYPES:
FILE: superTypes.kt
public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| {
public? open class A : R|kotlin/Any| {
public? [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
@@ -210,7 +210,7 @@ FILE: superTypes.kt
AnnotationType:
FILE: superTypes.kt
public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| {
public? open class A : R|kotlin/Any| {
public? [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
@@ -294,7 +294,7 @@ FILE: superTypes.kt
ValueParametersTypes:
FILE: superTypes.kt
public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| {
public? open class A : R|kotlin/Any| {
public? [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
@@ -315,7 +315,7 @@ FILE: superTypes.kt
TypeParametersTypes:
FILE: superTypes.kt
public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| {
public? open class A : R|kotlin/Any| {
public? [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
@@ -60,19 +60,19 @@ FILE: superTypesLoop.kt
}
}
public? open class A : B {
public? open class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [ContainingClassKey=A] constructor(): R|A| {
super<B>()
}
}
public? open class B : C {
public? open class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [ContainingClassKey=B] constructor(): R|B| {
super<C>()
}
}
public? open class C : A {
public? open class C : <ERROR TYPE REF: Loop in supertype: /C -> /A> {
public? [ContainingClassKey=C] constructor(): R|C| {
super<A>()
}
@@ -87,19 +87,19 @@ FILE: superTypesLoop.kt
}
}
public? open class A : B {
public? open class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [ContainingClassKey=A] constructor(): R|A| {
super<B>()
}
}
public? open class B : C {
public? open class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [ContainingClassKey=B] constructor(): R|B| {
super<C>()
}
}
public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class C : <ERROR TYPE REF: Loop in supertype: /C -> /A> {
public? open class C : <ERROR TYPE REF: Loop in supertype: /C -> /A> {
public? [ContainingClassKey=C] constructor(): R|C| {
super<A>()
}
@@ -114,13 +114,13 @@ FILE: superTypesLoop.kt
}
}
public? open class A : B {
public? open class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [ContainingClassKey=A] constructor(): R|A| {
super<B>()
}
}
public? open class B : C {
public? open class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [ContainingClassKey=B] constructor(): R|B| {
super<C>()
}
@@ -141,13 +141,13 @@ FILE: superTypesLoop.kt
}
}
public? open class A : B {
public? open class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [ContainingClassKey=A] constructor(): R|A| {
super<B>()
}
}
public? open class B : C {
public? open class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [ContainingClassKey=B] constructor(): R|B| {
super<C>()
}
@@ -168,13 +168,13 @@ FILE: superTypesLoop.kt
}
}
public? open class A : B {
public? open class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [ContainingClassKey=A] constructor(): R|A| {
super<B>()
}
}
public? open class B : C {
public? open class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [ContainingClassKey=B] constructor(): R|B| {
super<C>()
}
@@ -195,13 +195,13 @@ FILE: superTypesLoop.kt
}
}
public? open class A : B {
public? open class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [ContainingClassKey=A] constructor(): R|A| {
super<B>()
}
}
public? open class B : C {
public? open class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [ContainingClassKey=B] constructor(): R|B| {
super<C>()
}
@@ -249,13 +249,13 @@ FILE: superTypesLoop.kt
}
}
public? open class A : B {
public? open class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [ContainingClassKey=A] constructor(): R|A| {
super<B>()
}
}
public? open class B : C {
public? open class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [ContainingClassKey=B] constructor(): R|B| {
super<C>()
}
@@ -276,19 +276,19 @@ FILE: superTypesLoop.kt
}
}
public? open class A : B {
public? open class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [ContainingClassKey=A] constructor(): R|A| {
super<B>()
}
}
public? open class B : C {
public? open class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [ContainingClassKey=B] constructor(): R|B| {
super<C>()
}
}
public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class C : <ERROR TYPE REF: Loop in supertype: /C -> /A> {
public? open class C : <ERROR TYPE REF: Loop in supertype: /C -> /A> {
public? [ContainingClassKey=C] constructor(): R|C| {
super<A>()
}
@@ -303,13 +303,13 @@ FILE: superTypesLoop.kt
}
}
public? open class A : B {
public? open class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [ContainingClassKey=A] constructor(): R|A| {
super<B>()
}
}
public? open class B : C {
public? open class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [ContainingClassKey=B] constructor(): R|B| {
super<C>()
}
@@ -330,19 +330,19 @@ FILE: superTypesLoop.kt
}
}
public? open class A : B {
public? open class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [ContainingClassKey=A] constructor(): R|A| {
super<B>()
}
}
public? open class B : C {
public? open class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [ContainingClassKey=B] constructor(): R|B| {
super<C>()
}
}
public? open class C : A {
public? open class C : <ERROR TYPE REF: Loop in supertype: /C -> /A> {
public? [ContainingClassKey=C] constructor(): R|C| {
super<A>()
}
@@ -357,13 +357,13 @@ FILE: superTypesLoop.kt
}
}
public? open class A : B {
public? open class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [ContainingClassKey=A] constructor(): R|A| {
super<B>()
}
}
public? open class B : C {
public? open class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [ContainingClassKey=B] constructor(): R|B| {
super<C>()
}
@@ -384,19 +384,19 @@ FILE: superTypesLoop.kt
}
}
public? open class A : B {
public? open class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [ContainingClassKey=A] constructor(): R|A| {
super<B>()
}
}
public? open class B : C {
public? open class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [ContainingClassKey=B] constructor(): R|B| {
super<C>()
}
}
public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class C : <ERROR TYPE REF: Loop in supertype: /C -> /A> {
public? open class C : <ERROR TYPE REF: Loop in supertype: /C -> /A> {
public? [ContainingClassKey=C] constructor(): R|C| {
super<A>()
}
@@ -411,19 +411,19 @@ FILE: superTypesLoop.kt
}
}
public? open class A : B {
public? open class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [ContainingClassKey=A] constructor(): R|A| {
super<B>()
}
}
public? open class B : C {
public? open class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [ContainingClassKey=B] constructor(): R|B| {
super<C>()
}
}
public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class C : <ERROR TYPE REF: Loop in supertype: /C -> /A> {
public? open class C : <ERROR TYPE REF: Loop in supertype: /C -> /A> {
public? [ContainingClassKey=C] constructor(): R|C| {
super<A>()
}
@@ -444,13 +444,13 @@ FILE: superTypesLoop.kt
}
}
public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class B : R|C| {
public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public [ContainingClassKey=B] constructor(): R|B| {
super<R|C|>()
}
}
public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class C : R|A| {
public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class C : <ERROR TYPE REF: Loop in supertype: /C -> /A> {
public [ContainingClassKey=C] constructor(): R|C| {
super<R|A|>()
}
@@ -8,48 +8,48 @@ FILE: typeParameterOfLocalFunction.kt
IMPORTS:
FILE: typeParameterOfLocalFunction.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final fun <resolveMe> kkk(): R|kotlin/Unit| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
SUPER_TYPES:
FILE: typeParameterOfLocalFunction.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final fun <resolveMe> kkk(): R|kotlin/Unit| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
TYPES:
FILE: typeParameterOfLocalFunction.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final fun <resolveMe> kkk(): R|kotlin/Unit| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
STATUS:
FILE: typeParameterOfLocalFunction.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final fun <resolveMe> kkk(): R|kotlin/Unit| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
CONTRACTS:
FILE: typeParameterOfLocalFunction.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final fun <resolveMe> kkk(): R|kotlin/Unit| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: typeParameterOfLocalFunction.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final fun <resolveMe> kkk(): R|kotlin/Unit| {
public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final? fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
@@ -80,8 +80,8 @@ FILE: typeParameterOfLocalFunction.kt
AnnotationType:
FILE: typeParameterOfLocalFunction.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final fun <resolveMe> kkk(): R|kotlin/Unit| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
@@ -96,24 +96,24 @@ FILE: typeParameterOfLocalFunction.kt
DeclarationStatus:
FILE: typeParameterOfLocalFunction.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final fun <resolveMe> kkk(): R|kotlin/Unit| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
ValueParametersTypes:
FILE: typeParameterOfLocalFunction.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final fun <resolveMe> kkk(): R|kotlin/Unit| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
TypeParametersTypes:
FILE: typeParameterOfLocalFunction.kt
public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final fun <resolveMe> kkk(): R|kotlin/Unit| {
public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| {
local final? fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.api.DiagnosticCheckerFilter
import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState
import org.jetbrains.kotlin.idea.fir.low.level.api.api.getOrBuildFirFile
import org.jetbrains.kotlin.idea.fir.low.level.api.createResolveStateForNoCaching
import org.jetbrains.kotlin.idea.fir.low.level.api.transformers.FirLazyTransformerForIDE
import org.jetbrains.kotlin.idea.project.withLanguageVersionSettings
import org.jetbrains.kotlin.idea.test.*
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase.getLanguageLevel
@@ -157,7 +158,13 @@ abstract class AbstractCompilerBasedTest : KotlinLightCodeInsightFixtureTestCase
fun doTest(path: String) {
if (ignoreTest()) return
withLanguageLevel(modules.allDirectives) {
TestRunner(configuration).runTest(path)
val oldEnableDeepEnsure = FirLazyTransformerForIDE.enableDeepEnsure
try {
FirLazyTransformerForIDE.enableDeepEnsure = true
TestRunner(configuration).runTest(path)
} catch (_: Exception) {
FirLazyTransformerForIDE.enableDeepEnsure = oldEnableDeepEnsure
}
}
}
@@ -9,12 +9,10 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based.AbstractCompil
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
import org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based.addIdeTestIgnoreHandler
import org.jetbrains.kotlin.idea.fir.low.level.api.transformers.FirLazyTransformerForIDE
abstract class AbstractDiagnosisCompilerTestDataTest : AbstractCompilerBasedTest() {
override fun TestConfigurationBuilder.configureTest() {
baseFirDiagnosticTestConfiguration()
FirLazyTransformerForIDE.enableDeepEnsure = true
addIdeTestIgnoreHandler()
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
FILE: main.kt
public final [STATUS] class WithElvis : R|kotlin/Any| {
public [STATUS] constructor([STATUS] value: R|kotlin/String?|): R|elvis/WithElvis| {
public? [RAW_FIR] constructor([RAW_FIR] value: String?): R|elvis/WithElvis| {
super<R|kotlin/Any|>()
}
+1 -1
View File
@@ -2,4 +2,4 @@ FILE: callMe.kt
public final [BODY_RESOLVE] fun callMe(): R|kotlin/Int| {
^callMe Int(42)
}
public final [STATUS] fun other(): R|kotlin/Unit| { LAZY_BLOCK }
public? final? [RAW_FIR] fun other(): R|kotlin/Unit| { LAZY_BLOCK }