[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>
|
||||
public abstract [ResolvedTo(TYPES)] interface A<[ResolvedTo(TYPES)] T> : R|kotlin/Any| {
|
||||
public abstract [ResolvedTo(TYPES)] fun x(): R|kotlin/Unit|
|
||||
public abstract [ResolvedTo(STATUS)] interface A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
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>
|
||||
public abstract [ResolvedTo(TYPES)] interface A<[ResolvedTo(TYPES)] T> : R|kotlin/Any| {
|
||||
public abstract [ResolvedTo(TYPES)] fun x(): R|kotlin/Unit|
|
||||
public abstract [ResolvedTo(STATUS)] interface A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
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>
|
||||
public abstract [ResolvedTo(TYPES)] interface A<[ResolvedTo(TYPES)] T> : R|kotlin/Any| {
|
||||
public abstract [ResolvedTo(TYPES)] fun x(): R|kotlin/Unit|
|
||||
public abstract [ResolvedTo(STATUS)] interface A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
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");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("fromLocalHierarchyToOuter.kt")
|
||||
public void testFromLocalHierarchyToOuter() throws Exception {
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/fromLocalHierarchyToOuter.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("functionWithParameter.kt")
|
||||
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");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("fromLocalHierarchyToOuter.kt")
|
||||
public void testFromLocalHierarchyToOuter() throws Exception {
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/fromLocalHierarchyToOuter.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("functionWithParameter.kt")
|
||||
public void testFunctionWithParameter() throws Exception {
|
||||
|
||||
+8
-1
@@ -190,6 +190,8 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
private val designationMapForLocalClasses: Map<FirClassLikeDeclaration, FirClassLikeDeclaration?>,
|
||||
private val scopeForLocalClass: FirScope?
|
||||
) : FirAbstractTreeTransformer<FirResolvedDeclarationStatus?>(phase = FirResolvePhase.STATUS) {
|
||||
private val isTransformerForLocalDeclarations: Boolean get() = scopeForLocalClass != null
|
||||
|
||||
@PrivateForInline
|
||||
val classes = mutableListOf<FirClass>()
|
||||
val statusResolver = FirStatusResolver(session, scopeSession)
|
||||
@@ -329,7 +331,12 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
|
||||
private fun forceResolveStatusOfCorrespondingClass(typeRef: FirTypeRef) {
|
||||
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) {
|
||||
is FirRegularClassSymbol -> forceResolveStatusesOfClass(superClassSymbol.fir)
|
||||
is FirTypeAliasSymbol -> forceResolveStatusOfCorrespondingClass(superClassSymbol.fir.expandedTypeRef)
|
||||
|
||||
Reference in New Issue
Block a user