[FIR] avoid jumping from status transformer for local classes to unresolved non-local classes
We must resolve a non-local declaration before access if we want to jump from local to it to avoid possible problems with parallel resolution ^KT-56550
This commit is contained in:
committed by
Space Team
parent
71c66cdb01
commit
ba08f2c08a
Vendored
+6
-6
@@ -121,8 +121,8 @@ FILE: [ResolvedTo(IMPORTS)] anonymousObjectInInvalidPosition.kt
|
|||||||
}
|
}
|
||||||
|
|
||||||
private [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): <ERROR TYPE REF: Wrong number of type arguments>
|
private [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): <ERROR TYPE REF: Wrong number of type arguments>
|
||||||
public abstract [ResolvedTo(TYPES)] interface A<[ResolvedTo(TYPES)] T> : R|kotlin/Any| {
|
public abstract [ResolvedTo(STATUS)] interface A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||||
public abstract [ResolvedTo(TYPES)] fun x(): R|kotlin/Unit|
|
public abstract [ResolvedTo(STATUS)] fun x(): R|kotlin/Unit|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,8 +140,8 @@ FILE: [ResolvedTo(IMPORTS)] anonymousObjectInInvalidPosition.kt
|
|||||||
}
|
}
|
||||||
|
|
||||||
private [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] get(): <ERROR TYPE REF: Wrong number of type arguments>
|
private [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] get(): <ERROR TYPE REF: Wrong number of type arguments>
|
||||||
public abstract [ResolvedTo(TYPES)] interface A<[ResolvedTo(TYPES)] T> : R|kotlin/Any| {
|
public abstract [ResolvedTo(STATUS)] interface A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||||
public abstract [ResolvedTo(TYPES)] fun x(): R|kotlin/Unit|
|
public abstract [ResolvedTo(STATUS)] fun x(): R|kotlin/Unit|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,8 +159,8 @@ FILE: [ResolvedTo(IMPORTS)] anonymousObjectInInvalidPosition.kt
|
|||||||
}
|
}
|
||||||
|
|
||||||
private [ResolvedTo(BODY_RESOLVE)] get(): <ERROR TYPE REF: Wrong number of type arguments>
|
private [ResolvedTo(BODY_RESOLVE)] get(): <ERROR TYPE REF: Wrong number of type arguments>
|
||||||
public abstract [ResolvedTo(TYPES)] interface A<[ResolvedTo(TYPES)] T> : R|kotlin/Any| {
|
public abstract [ResolvedTo(STATUS)] interface A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||||
public abstract [ResolvedTo(TYPES)] fun x(): R|kotlin/Unit|
|
public abstract [ResolvedTo(STATUS)] fun x(): R|kotlin/Unit|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
open class TopLevelClass {
|
||||||
|
open fun foo(i: Int) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun boo(b: String) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
open class AnotherTopLevelClass : TopLevelClass() {
|
||||||
|
override fun foo(i: Int) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun resolve<caret>Me() {
|
||||||
|
open class LocalClass : AnotherTopLevelClass() {
|
||||||
|
override fun foo(i: Int) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class SecondLocalClass : LocalClass() {
|
||||||
|
override fun boo(b: String) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+429
@@ -0,0 +1,429 @@
|
|||||||
|
RAW_FIR:
|
||||||
|
FILE: [ResolvedTo(RAW_FIR)] fromLocalHierarchyToOuter.kt
|
||||||
|
[ResolvedTo(RAW_FIR)] annotations container
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
|
||||||
|
LAZY_super<R|kotlin/Any|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun boo([ResolvedTo(RAW_FIR)] b: String): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
|
||||||
|
LAZY_super<TopLevelClass>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? final? [ResolvedTo(RAW_FIR)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
IMPORTS:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] fromLocalHierarchyToOuter.kt
|
||||||
|
[ResolvedTo(RAW_FIR)] annotations container
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
|
||||||
|
LAZY_super<R|kotlin/Any|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun boo([ResolvedTo(RAW_FIR)] b: String): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
|
||||||
|
LAZY_super<TopLevelClass>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? final? [ResolvedTo(RAW_FIR)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
COMPILER_REQUIRED_ANNOTATIONS:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] fromLocalHierarchyToOuter.kt
|
||||||
|
[ResolvedTo(RAW_FIR)] annotations container
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
|
||||||
|
LAZY_super<R|kotlin/Any|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun boo([ResolvedTo(RAW_FIR)] b: String): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
|
||||||
|
LAZY_super<TopLevelClass>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
COMPANION_GENERATION:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] fromLocalHierarchyToOuter.kt
|
||||||
|
[ResolvedTo(RAW_FIR)] annotations container
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
|
||||||
|
LAZY_super<R|kotlin/Any|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun boo([ResolvedTo(RAW_FIR)] b: String): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
|
||||||
|
LAZY_super<TopLevelClass>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? final? [ResolvedTo(COMPANION_GENERATION)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
SUPER_TYPES:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] fromLocalHierarchyToOuter.kt
|
||||||
|
[ResolvedTo(RAW_FIR)] annotations container
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
|
||||||
|
LAZY_super<R|kotlin/Any|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun boo([ResolvedTo(RAW_FIR)] b: String): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
|
||||||
|
LAZY_super<TopLevelClass>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? final? [ResolvedTo(SUPER_TYPES)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] fromLocalHierarchyToOuter.kt
|
||||||
|
[ResolvedTo(RAW_FIR)] annotations container
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
|
||||||
|
LAZY_super<R|kotlin/Any|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun boo([ResolvedTo(RAW_FIR)] b: String): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
|
||||||
|
LAZY_super<TopLevelClass>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? final? [ResolvedTo(TYPES)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
STATUS:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] fromLocalHierarchyToOuter.kt
|
||||||
|
[ResolvedTo(RAW_FIR)] annotations container
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
|
||||||
|
LAZY_super<R|kotlin/Any|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun boo([ResolvedTo(RAW_FIR)] b: String): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
|
||||||
|
LAZY_super<TopLevelClass>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public final [ResolvedTo(STATUS)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
EXPECT_ACTUAL_MATCHING:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] fromLocalHierarchyToOuter.kt
|
||||||
|
[ResolvedTo(RAW_FIR)] annotations container
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
|
||||||
|
LAZY_super<R|kotlin/Any|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun boo([ResolvedTo(RAW_FIR)] b: String): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
|
||||||
|
LAZY_super<TopLevelClass>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
ARGUMENTS_OF_ANNOTATIONS:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] fromLocalHierarchyToOuter.kt
|
||||||
|
[ResolvedTo(RAW_FIR)] annotations container
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
|
||||||
|
LAZY_super<R|kotlin/Any|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun boo([ResolvedTo(RAW_FIR)] b: String): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
|
||||||
|
LAZY_super<TopLevelClass>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public final [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
CONTRACTS:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] fromLocalHierarchyToOuter.kt
|
||||||
|
[ResolvedTo(RAW_FIR)] annotations container
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
|
||||||
|
LAZY_super<R|kotlin/Any|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun boo([ResolvedTo(RAW_FIR)] b: String): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
|
||||||
|
LAZY_super<TopLevelClass>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public final [ResolvedTo(CONTRACTS)] fun resolveMe(): R|kotlin/Unit| {
|
||||||
|
local open [ResolvedTo(RAW_FIR)] class LocalClass : AnotherTopLevelClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LocalClass] constructor(): R|LocalClass| {
|
||||||
|
super<AnotherTopLevelClass>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
local final? [ResolvedTo(RAW_FIR)] class SecondLocalClass : LocalClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=SecondLocalClass] constructor(): R|SecondLocalClass| {
|
||||||
|
super<LocalClass>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun boo([ResolvedTo(RAW_FIR)] b: String): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
IMPLICIT_TYPES_BODY_RESOLVE:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] fromLocalHierarchyToOuter.kt
|
||||||
|
[ResolvedTo(RAW_FIR)] annotations container
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
|
||||||
|
LAZY_super<R|kotlin/Any|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun boo([ResolvedTo(RAW_FIR)] b: String): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
|
||||||
|
LAZY_super<TopLevelClass>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun resolveMe(): R|kotlin/Unit| {
|
||||||
|
local open [ResolvedTo(RAW_FIR)] class LocalClass : AnotherTopLevelClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LocalClass] constructor(): R|LocalClass| {
|
||||||
|
super<AnotherTopLevelClass>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
local final? [ResolvedTo(RAW_FIR)] class SecondLocalClass : LocalClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=SecondLocalClass] constructor(): R|SecondLocalClass| {
|
||||||
|
super<LocalClass>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun boo([ResolvedTo(RAW_FIR)] b: String): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ANNOTATIONS_ARGUMENTS_MAPPING:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] fromLocalHierarchyToOuter.kt
|
||||||
|
[ResolvedTo(RAW_FIR)] annotations container
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
|
||||||
|
LAZY_super<R|kotlin/Any|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] fun boo([ResolvedTo(RAW_FIR)] b: String): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
|
||||||
|
LAZY_super<TopLevelClass>
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] fun resolveMe(): R|kotlin/Unit| {
|
||||||
|
local open [ResolvedTo(RAW_FIR)] class LocalClass : AnotherTopLevelClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LocalClass] constructor(): R|LocalClass| {
|
||||||
|
super<AnotherTopLevelClass>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
local final? [ResolvedTo(RAW_FIR)] class SecondLocalClass : LocalClass {
|
||||||
|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=SecondLocalClass] constructor(): R|SecondLocalClass| {
|
||||||
|
super<LocalClass>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public? open? override [ResolvedTo(RAW_FIR)] fun boo([ResolvedTo(RAW_FIR)] b: String): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
BODY_RESOLVE:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] fromLocalHierarchyToOuter.kt
|
||||||
|
[ResolvedTo(RAW_FIR)] annotations container
|
||||||
|
public open [ResolvedTo(STATUS)] class TopLevelClass : R|kotlin/Any| {
|
||||||
|
public [ResolvedTo(STATUS)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
|
||||||
|
LAZY_super<R|kotlin/Any|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public open [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] i: R|kotlin/Int|): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
public open [ResolvedTo(STATUS)] fun boo([ResolvedTo(STATUS)] b: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public open [ResolvedTo(STATUS)] class AnotherTopLevelClass : R|TopLevelClass| {
|
||||||
|
public [ResolvedTo(STATUS)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
|
||||||
|
LAZY_super<R|TopLevelClass|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public open override [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] i: R|kotlin/Int|): R|kotlin/Unit| { LAZY_BLOCK }
|
||||||
|
|
||||||
|
}
|
||||||
|
public final [ResolvedTo(BODY_RESOLVE)] fun resolveMe(): R|kotlin/Unit| {
|
||||||
|
local open [ResolvedTo(BODY_RESOLVE)] class LocalClass : R|AnotherTopLevelClass| {
|
||||||
|
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=LocalClass] constructor(): R|LocalClass| {
|
||||||
|
super<R|AnotherTopLevelClass|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] i: R|kotlin/Int|): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
local final [ResolvedTo(BODY_RESOLVE)] class SecondLocalClass : R|LocalClass| {
|
||||||
|
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=SecondLocalClass] constructor(): R|SecondLocalClass| {
|
||||||
|
super<R|LocalClass|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public open override [ResolvedTo(BODY_RESOLVE)] fun boo([ResolvedTo(BODY_RESOLVE)] b: R|kotlin/String|): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
FILE RAW TO BODY:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] fromLocalHierarchyToOuter.kt
|
||||||
|
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||||
|
public open [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
|
||||||
|
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public open [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] i: R|kotlin/Int|): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public open [ResolvedTo(BODY_RESOLVE)] fun boo([ResolvedTo(BODY_RESOLVE)] b: R|kotlin/String|): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public open [ResolvedTo(BODY_RESOLVE)] class AnotherTopLevelClass : R|TopLevelClass| {
|
||||||
|
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
|
||||||
|
super<R|TopLevelClass|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] i: R|kotlin/Int|): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public final [ResolvedTo(BODY_RESOLVE)] fun resolveMe(): R|kotlin/Unit| {
|
||||||
|
local open [ResolvedTo(BODY_RESOLVE)] class LocalClass : R|AnotherTopLevelClass| {
|
||||||
|
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=LocalClass] constructor(): R|LocalClass| {
|
||||||
|
super<R|AnotherTopLevelClass|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] i: R|kotlin/Int|): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
local final [ResolvedTo(BODY_RESOLVE)] class SecondLocalClass : R|LocalClass| {
|
||||||
|
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=SecondLocalClass] constructor(): R|SecondLocalClass| {
|
||||||
|
super<R|LocalClass|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public open override [ResolvedTo(BODY_RESOLVE)] fun boo([ResolvedTo(BODY_RESOLVE)] b: R|kotlin/String|): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+6
@@ -174,6 +174,12 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst
|
|||||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/fakePrimaryConstructor.kt");
|
runTest("analysis/low-level-api-fir/testdata/lazyResolve/fakePrimaryConstructor.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("fromLocalHierarchyToOuter.kt")
|
||||||
|
public void testFromLocalHierarchyToOuter() throws Exception {
|
||||||
|
runTest("analysis/low-level-api-fir/testdata/lazyResolve/fromLocalHierarchyToOuter.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("functionWithParameter.kt")
|
@TestMetadata("functionWithParameter.kt")
|
||||||
public void testFunctionWithParameter() throws Exception {
|
public void testFunctionWithParameter() throws Exception {
|
||||||
|
|||||||
+6
@@ -174,6 +174,12 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou
|
|||||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/fakePrimaryConstructor.kt");
|
runTest("analysis/low-level-api-fir/testdata/lazyResolve/fakePrimaryConstructor.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("fromLocalHierarchyToOuter.kt")
|
||||||
|
public void testFromLocalHierarchyToOuter() throws Exception {
|
||||||
|
runTest("analysis/low-level-api-fir/testdata/lazyResolve/fromLocalHierarchyToOuter.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("functionWithParameter.kt")
|
@TestMetadata("functionWithParameter.kt")
|
||||||
public void testFunctionWithParameter() throws Exception {
|
public void testFunctionWithParameter() throws Exception {
|
||||||
|
|||||||
+8
-1
@@ -190,6 +190,8 @@ abstract class AbstractFirStatusResolveTransformer(
|
|||||||
private val designationMapForLocalClasses: Map<FirClassLikeDeclaration, FirClassLikeDeclaration?>,
|
private val designationMapForLocalClasses: Map<FirClassLikeDeclaration, FirClassLikeDeclaration?>,
|
||||||
private val scopeForLocalClass: FirScope?
|
private val scopeForLocalClass: FirScope?
|
||||||
) : FirAbstractTreeTransformer<FirResolvedDeclarationStatus?>(phase = FirResolvePhase.STATUS) {
|
) : FirAbstractTreeTransformer<FirResolvedDeclarationStatus?>(phase = FirResolvePhase.STATUS) {
|
||||||
|
private val isTransformerForLocalDeclarations: Boolean get() = scopeForLocalClass != null
|
||||||
|
|
||||||
@PrivateForInline
|
@PrivateForInline
|
||||||
val classes = mutableListOf<FirClass>()
|
val classes = mutableListOf<FirClass>()
|
||||||
val statusResolver = FirStatusResolver(session, scopeSession)
|
val statusResolver = FirStatusResolver(session, scopeSession)
|
||||||
@@ -329,7 +331,12 @@ abstract class AbstractFirStatusResolveTransformer(
|
|||||||
|
|
||||||
private fun forceResolveStatusOfCorrespondingClass(typeRef: FirTypeRef) {
|
private fun forceResolveStatusOfCorrespondingClass(typeRef: FirTypeRef) {
|
||||||
val superClassSymbol = typeRef.coneType.toSymbol(session)
|
val superClassSymbol = typeRef.coneType.toSymbol(session)
|
||||||
superClassSymbol?.lazyResolveToPhase(FirResolvePhase.STATUS.previous)
|
if (isTransformerForLocalDeclarations) {
|
||||||
|
superClassSymbol?.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
|
} else {
|
||||||
|
superClassSymbol?.lazyResolveToPhase(FirResolvePhase.STATUS.previous)
|
||||||
|
}
|
||||||
|
|
||||||
when (superClassSymbol) {
|
when (superClassSymbol) {
|
||||||
is FirRegularClassSymbol -> forceResolveStatusesOfClass(superClassSymbol.fir)
|
is FirRegularClassSymbol -> forceResolveStatusesOfClass(superClassSymbol.fir)
|
||||||
is FirTypeAliasSymbol -> forceResolveStatusOfCorrespondingClass(superClassSymbol.fir.expandedTypeRef)
|
is FirTypeAliasSymbol -> forceResolveStatusOfCorrespondingClass(superClassSymbol.fir.expandedTypeRef)
|
||||||
|
|||||||
Reference in New Issue
Block a user