2885df14ee
Now we will try to avoid redundant calculation:
* Class-like declarations can be calculated without super types
* Overridden search logic not is out of lock
Unfortunately, right now it is not safe to use
StatusResolveMode.FunctionWithSpecificName and
StatusResolveMode.PropertyWithSpecificName
because lazyResolveToPhaseWithCallableMembers can lead to an incorrect
state of scope. Example:
```
open class A {
open fun a() {}
open fun b() {}
}
class C : A()
```
Steps:
1. Resolve constructor of C to STATUS
2. Now we want to call lazyResolveToPhaseWithCallableMembers on
C, and this call will do nothing because this class and all
its declarations (only constructor) are already in STATUS phase,
so class A won't be resolved as expected
^KT-56551
224 lines
9.4 KiB
Plaintext
224 lines
9.4 KiB
Plaintext
RAW_FIR:
|
|
FILE: [ResolvedTo(RAW_FIR)] simpleLoopInOverride2.kt
|
|
[ResolvedTo(BODY_RESOLVE)] annotations container
|
|
public? final? [ResolvedTo(RAW_FIR)] interface Foo1 : Foo2 {
|
|
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(RAW_FIR)] interface Foo2 : Foo3 {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(RAW_FIR)] interface Foo3 : Foo1 {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
|
|
IMPORTS:
|
|
FILE: [ResolvedTo(IMPORTS)] simpleLoopInOverride2.kt
|
|
[ResolvedTo(BODY_RESOLVE)] annotations container
|
|
public? final? [ResolvedTo(RAW_FIR)] interface Foo1 : Foo2 {
|
|
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(RAW_FIR)] interface Foo2 : Foo3 {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(RAW_FIR)] interface Foo3 : Foo1 {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
|
|
COMPILER_REQUIRED_ANNOTATIONS:
|
|
FILE: [ResolvedTo(IMPORTS)] simpleLoopInOverride2.kt
|
|
[ResolvedTo(BODY_RESOLVE)] annotations container
|
|
public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] interface Foo1 : Foo2 {
|
|
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(RAW_FIR)] interface Foo2 : Foo3 {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(RAW_FIR)] interface Foo3 : Foo1 {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
|
|
COMPANION_GENERATION:
|
|
FILE: [ResolvedTo(IMPORTS)] simpleLoopInOverride2.kt
|
|
[ResolvedTo(BODY_RESOLVE)] annotations container
|
|
public? final? [ResolvedTo(COMPANION_GENERATION)] interface Foo1 : Foo2 {
|
|
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(RAW_FIR)] interface Foo2 : Foo3 {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(RAW_FIR)] interface Foo3 : Foo1 {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
|
|
SUPER_TYPES:
|
|
FILE: [ResolvedTo(IMPORTS)] simpleLoopInOverride2.kt
|
|
[ResolvedTo(BODY_RESOLVE)] annotations container
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo1 : <ERROR TYPE REF: Loop in supertype: /Foo1 -> /Foo2> {
|
|
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo2 : <ERROR TYPE REF: Loop in supertype: /Foo2 -> /Foo3> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo3 : <ERROR TYPE REF: Loop in supertype: /Foo3 -> /Foo1> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
|
|
TYPES:
|
|
FILE: [ResolvedTo(IMPORTS)] simpleLoopInOverride2.kt
|
|
[ResolvedTo(BODY_RESOLVE)] annotations container
|
|
public? final? [ResolvedTo(TYPES)] interface Foo1 : <ERROR TYPE REF: Loop in supertype: /Foo1 -> /Foo2> {
|
|
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo2 : <ERROR TYPE REF: Loop in supertype: /Foo2 -> /Foo3> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo3 : <ERROR TYPE REF: Loop in supertype: /Foo3 -> /Foo1> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
|
|
STATUS:
|
|
FILE: [ResolvedTo(IMPORTS)] simpleLoopInOverride2.kt
|
|
[ResolvedTo(BODY_RESOLVE)] annotations container
|
|
public abstract [ResolvedTo(STATUS)] interface Foo1 : <ERROR TYPE REF: Loop in supertype: /Foo1 -> /Foo2> {
|
|
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo2 : <ERROR TYPE REF: Loop in supertype: /Foo2 -> /Foo3> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo3 : <ERROR TYPE REF: Loop in supertype: /Foo3 -> /Foo1> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
|
|
EXPECT_ACTUAL_MATCHING:
|
|
FILE: [ResolvedTo(IMPORTS)] simpleLoopInOverride2.kt
|
|
[ResolvedTo(BODY_RESOLVE)] annotations container
|
|
public abstract [ResolvedTo(EXPECT_ACTUAL_MATCHING)] interface Foo1 : <ERROR TYPE REF: Loop in supertype: /Foo1 -> /Foo2> {
|
|
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo2 : <ERROR TYPE REF: Loop in supertype: /Foo2 -> /Foo3> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo3 : <ERROR TYPE REF: Loop in supertype: /Foo3 -> /Foo1> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
|
|
ARGUMENTS_OF_ANNOTATIONS:
|
|
FILE: [ResolvedTo(IMPORTS)] simpleLoopInOverride2.kt
|
|
[ResolvedTo(BODY_RESOLVE)] annotations container
|
|
public abstract [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] interface Foo1 : <ERROR TYPE REF: Loop in supertype: /Foo1 -> /Foo2> {
|
|
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo2 : <ERROR TYPE REF: Loop in supertype: /Foo2 -> /Foo3> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo3 : <ERROR TYPE REF: Loop in supertype: /Foo3 -> /Foo1> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
|
|
CONTRACTS:
|
|
FILE: [ResolvedTo(IMPORTS)] simpleLoopInOverride2.kt
|
|
[ResolvedTo(BODY_RESOLVE)] annotations container
|
|
public abstract [ResolvedTo(CONTRACTS)] interface Foo1 : <ERROR TYPE REF: Loop in supertype: /Foo1 -> /Foo2> {
|
|
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo2 : <ERROR TYPE REF: Loop in supertype: /Foo2 -> /Foo3> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo3 : <ERROR TYPE REF: Loop in supertype: /Foo3 -> /Foo1> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
|
|
IMPLICIT_TYPES_BODY_RESOLVE:
|
|
FILE: [ResolvedTo(IMPORTS)] simpleLoopInOverride2.kt
|
|
[ResolvedTo(BODY_RESOLVE)] annotations container
|
|
public abstract [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] interface Foo1 : <ERROR TYPE REF: Loop in supertype: /Foo1 -> /Foo2> {
|
|
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo2 : <ERROR TYPE REF: Loop in supertype: /Foo2 -> /Foo3> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo3 : <ERROR TYPE REF: Loop in supertype: /Foo3 -> /Foo1> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
|
|
ANNOTATIONS_ARGUMENTS_MAPPING:
|
|
FILE: [ResolvedTo(IMPORTS)] simpleLoopInOverride2.kt
|
|
[ResolvedTo(BODY_RESOLVE)] annotations container
|
|
public abstract [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] interface Foo1 : <ERROR TYPE REF: Loop in supertype: /Foo1 -> /Foo2> {
|
|
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo2 : <ERROR TYPE REF: Loop in supertype: /Foo2 -> /Foo3> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo3 : <ERROR TYPE REF: Loop in supertype: /Foo3 -> /Foo1> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
|
|
BODY_RESOLVE:
|
|
FILE: [ResolvedTo(IMPORTS)] simpleLoopInOverride2.kt
|
|
[ResolvedTo(BODY_RESOLVE)] annotations container
|
|
public abstract [ResolvedTo(BODY_RESOLVE)] interface Foo1 : <ERROR TYPE REF: Loop in supertype: /Foo1 -> /Foo2> {
|
|
public abstract [ResolvedTo(BODY_RESOLVE)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo2 : <ERROR TYPE REF: Loop in supertype: /Foo2 -> /Foo3> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public? final? [ResolvedTo(SUPER_TYPES)] interface Foo3 : <ERROR TYPE REF: Loop in supertype: /Foo3 -> /Foo1> {
|
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
|
|
FILE RAW TO BODY:
|
|
FILE: [ResolvedTo(IMPORTS)] simpleLoopInOverride2.kt
|
|
[ResolvedTo(BODY_RESOLVE)] annotations container
|
|
public abstract [ResolvedTo(BODY_RESOLVE)] interface Foo1 : <ERROR TYPE REF: Loop in supertype: /Foo1 -> /Foo2> {
|
|
public abstract [ResolvedTo(BODY_RESOLVE)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public abstract [ResolvedTo(BODY_RESOLVE)] interface Foo2 : <ERROR TYPE REF: Loop in supertype: /Foo2 -> /Foo3> {
|
|
public abstract override [ResolvedTo(BODY_RESOLVE)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|
|
public abstract [ResolvedTo(BODY_RESOLVE)] interface Foo3 : <ERROR TYPE REF: Loop in supertype: /Foo3 -> /Foo1> {
|
|
public abstract override [ResolvedTo(BODY_RESOLVE)] fun foo(): R|kotlin/Unit|
|
|
|
|
}
|