[FIR] treat constructors of local classes as local declarations

The main problem: we are trying to lazily resolve local declaration

^KT-58546
^KT-58490
This commit is contained in:
Dmitrii Gridin
2023-05-08 18:03:04 +02:00
committed by Space Team
parent 388634e47d
commit ae88726fae
23 changed files with 603 additions and 33 deletions
@@ -7,5 +7,5 @@ FILE: localConstructor.kt
}
lval l: R|Local| = R|/Local.Local|()
lval l: R|Local| = R|<local>/Local.Local|()
}
@@ -8,7 +8,7 @@ FILE: localInnerClass.kt
}
public final fun foo(): R|Foo| {
^foo this@R|/<anonymous>|.R|/<anonymous>.Derived.Derived|(Int(42))
^foo this@R|/<anonymous>|.R|<local>/<anonymous>.Derived.Derived|(Int(42))
}
local final inner class Derived : R|Foo| {
@@ -19,7 +19,7 @@ FILE: localScopes.kt
}
lval base: R|BaseLocal| = R|/BaseLocal.BaseLocal|()
lval base: R|BaseLocal| = R|<local>/BaseLocal.BaseLocal|()
R|<local>/base|.R|<local>/baz|()
R|<local>/base|.R|/Bar.foo|()
lval anonymous: R|<anonymous>| = object : R|Bar| {
@@ -44,7 +44,7 @@ FILE: localScopes.kt
}
lval derived: R|DerivedLocal| = R|/DerivedLocal.DerivedLocal|()
lval derived: R|DerivedLocal| = R|<local>/DerivedLocal.DerivedLocal|()
R|<local>/derived|.R|<local>/gau|()
R|<local>/derived|.R|<local>/baz|()
R|<local>/derived|.R|/Bar.foo|()
@@ -72,7 +72,7 @@ FILE: first.kt
public final fun baz(): R|kotlin/Unit| {
this@R|/Local|.R|<local>/bar|()
this@R|/Local|.R|/Local.Inner.Inner|()
this@R|/Local|.R|<local>/Local.Inner.Inner|()
}
local final inner class Inner : R|kotlin/Any| {
@@ -88,8 +88,8 @@ FILE: first.kt
}
R|/Local.Local|().R|<local>/baz|()
R|/Local.Local|().R|<local>/bar<HIDDEN: <local>/bar is invisible>#|()
R|<local>/Local.Local|().R|<local>/baz|()
R|<local>/Local.Local|().R|<local>/bar<HIDDEN: <local>/bar is invisible>#|()
}
public final fun test(): R|kotlin/Unit| {
R|/foo|()
@@ -12,7 +12,7 @@ FILE: RedundantVisibilityModifierChecker.kt
}
R|/LocalClass.LocalClass|().R|<local>/foo| = Int(1)
R|<local>/LocalClass.LocalClass|().R|<local>/foo| = Int(1)
}
internal final inline fun internal(): R|kotlin/Unit| {
R|/f|()
@@ -11,7 +11,7 @@ FILE: RedundantVisibilityModifierCheckerWithExplicitApiMode.kt
}
R|/LocalClass.LocalClass|().R|<local>/foo| = Int(1)
R|<local>/LocalClass.LocalClass|().R|<local>/foo| = Int(1)
}
public final fun f2(): R|kotlin/Unit| {
R|/f1|()
@@ -15,5 +15,5 @@ FILE: localVariableInSecondaryConstructor.kt
}
R|/LocalClass.LocalClass|().R|<local>/arg|
R|<local>/LocalClass.LocalClass|().R|<local>/arg|
}
@@ -27,7 +27,7 @@ FILE: implicitInLocalClasses.kt
}
lval a: R|A| = R|/A.A|()
lval a: R|A| = R|<local>/A.A|()
R|/useBoolean|(R|<local>/a|.R|<local>/foo|(Int(1)))
R|/useBoolean|(R|<local>/a|.R|<local>/bar|(Int(1)))
R|/useBoolean|(R|<local>/a|.R|<local>/w|)
@@ -45,7 +45,7 @@ FILE: implicitInLocalClasses.kt
^bar CMP(>, this@R|/B|.R|kotlin/Any.hashCode|().R|kotlin/Int.plus|(R|<local>/y|).R|kotlin/Int.compareTo|(Int(0)))
}
public final val inner: R|B.Inner| = this@R|/B|.R|/B.Inner.Inner|()
public final val inner: R|B.Inner| = this@R|/B|.R|<local>/B.Inner.Inner|()
public get(): R|B.Inner|
local final inner class Inner : R|kotlin/Any| {
@@ -67,7 +67,7 @@ FILE: implicitInLocalClasses.kt
}
lval b: R|B| = R|/B.B|()
lval b: R|B| = R|<local>/B.B|()
R|/useBoolean|(R|<local>/b|.R|<local>/foo|(Int(1)))
R|/useBoolean|(R|<local>/b|.R|<local>/bar|(Int(1)))
R|/useBoolean|(R|<local>/b|.R|<local>/inner|.R|<local>/w|)
@@ -44,14 +44,14 @@ FILE: objectInnerClass.kt
}
public final fun caseForBase(): R|kotlin/Unit| {
lval base: R|<anonymous>.Base| = this@R|/<anonymous>|.R|/<anonymous>.Base.Base|(R|/B.B|())
lval base: R|<anonymous>.Base| = this@R|/<anonymous>|.R|<local>/<anonymous>.Base.Base|(R|/B.B|())
R|<local>/base|.R|<local>/baseFun|()
R|<local>/base|.R|<local>/property|
(this@R|/<anonymous>|, R|<local>/base|).R|/<anonymous>.hoo|()
}
public final fun caseForChild(): R|kotlin/Unit| {
lval child: R|<anonymous>.Child| = this@R|/<anonymous>|.R|/<anonymous>.Child.Child|(R|/B.B|())
lval child: R|<anonymous>.Child| = this@R|/<anonymous>|.R|<local>/<anonymous>.Child.Child|(R|/B.B|())
R|<local>/child|.R|<local>/baseFun|()
R|<local>/child|.R|<local>/property|
R|<local>/child|.R|<local>/foo|()
@@ -169,14 +169,14 @@ FILE: objectInnerClass.kt
}
public final fun caseForBase(): R|kotlin/Unit| {
lval base: R|Case3.<anonymous>.Base| = this@R|/<anonymous>|.R|/Case3.<anonymous>.Base.Base|(R|/B.B|())
lval base: R|Case3.<anonymous>.Base| = this@R|/<anonymous>|.R|<local>/Case3.<anonymous>.Base.Base|(R|/B.B|())
R|<local>/base|.R|<local>/baseFun|()
R|<local>/base|.R|<local>/property|
(this@R|/<anonymous>|, R|<local>/base|).R|/<anonymous>.hoo|()
}
public final fun caseForChild(): R|kotlin/Unit| {
lval child: R|Case3.<anonymous>.Child| = this@R|/<anonymous>|.R|/Case3.<anonymous>.Child.Child|(R|/B.B|())
lval child: R|Case3.<anonymous>.Child| = this@R|/<anonymous>|.R|<local>/Case3.<anonymous>.Child.Child|(R|/B.B|())
R|<local>/child|.R|<local>/baseFun|()
R|<local>/child|.R|<local>/property|
R|<local>/child|.R|<local>/foo|()
@@ -20,7 +20,7 @@ FILE: test.kt
}
public final fun bar(): R|kotlin/String| {
^bar this@R|/<anonymous>|.R|/<anonymous>.S.S|().R|<local>/foo|()
^bar this@R|/<anonymous>|.R|<local>/<anonymous>.S.S|().R|<local>/foo|()
}
}