Fir2Ir scripts: fix declarations registration and processing
This commit is contained in:
committed by
Space Team
parent
5824b9c59c
commit
9adf24950a
@@ -217,7 +217,8 @@ class Fir2IrConverter(
|
|||||||
|
|
||||||
internal fun processRegularClassMembers(
|
internal fun processRegularClassMembers(
|
||||||
regularClass: FirRegularClass,
|
regularClass: FirRegularClass,
|
||||||
irClass: IrClass = classifierStorage.getCachedIrClass(regularClass)!!
|
irClass: IrClass =
|
||||||
|
classifierStorage.getCachedIrClass(regularClass) ?: error("Expecting existing IrClass for class ${regularClass.name}")
|
||||||
): IrClass {
|
): IrClass {
|
||||||
val allDeclarations = mutableListOf<FirDeclaration>().apply {
|
val allDeclarations = mutableListOf<FirDeclaration>().apply {
|
||||||
addAll(regularClass.declarations)
|
addAll(regularClass.declarations)
|
||||||
@@ -361,6 +362,16 @@ class Fir2IrConverter(
|
|||||||
assert(parent is IrFile)
|
assert(parent is IrFile)
|
||||||
declarationStorage.getOrCreateIrScript(declaration).also { irScript ->
|
declarationStorage.getOrCreateIrScript(declaration).also { irScript ->
|
||||||
declarationStorage.enterScope(irScript)
|
declarationStorage.enterScope(irScript)
|
||||||
|
irScript.parent = parent
|
||||||
|
for (scriptStatement in declaration.statements) {
|
||||||
|
if (scriptStatement is FirDeclaration) {
|
||||||
|
if (scriptStatement is FirRegularClass) {
|
||||||
|
registerClassAndNestedClasses(scriptStatement, irScript)
|
||||||
|
processClassAndNestedClassHeaders(scriptStatement)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
for (scriptStatement in declaration.statements) {
|
for (scriptStatement in declaration.statements) {
|
||||||
if (scriptStatement is FirDeclaration) {
|
if (scriptStatement is FirDeclaration) {
|
||||||
processMemberDeclaration(scriptStatement, null, irScript)
|
processMemberDeclaration(scriptStatement, null, irScript)
|
||||||
|
|||||||
+1
@@ -184,6 +184,7 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: FirKotli
|
|||||||
override fun visitScript(script: FirScript, data: FirRecorderData) {
|
override fun visitScript(script: FirScript, data: FirRecorderData) {
|
||||||
val symbol = script.symbol
|
val symbol = script.symbol
|
||||||
data.state.scriptContainerMap[symbol] = data.file
|
data.state.scriptContainerMap[symbol] = data.file
|
||||||
|
script.acceptChildren(this, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
|
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
|
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
|
|
||||||
class SimpleClass(val s: String) {
|
class SimpleClass(val s: String) {
|
||||||
fun foo() = s
|
fun foo() = s
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
|
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
|
|||||||
@@ -17,9 +17,9 @@ class Nested {
|
|||||||
val innerThisProp = this<!UNRESOLVED_LABEL!>@NestedInnerClass<!>.property
|
val innerThisProp = this<!UNRESOLVED_LABEL!>@NestedInnerClass<!>.property
|
||||||
|
|
||||||
inner class InnerInner {
|
inner class InnerInner {
|
||||||
fun f() = <!UNRESOLVED_REFERENCE!>innerFun<!>()
|
fun f() = innerFun()
|
||||||
fun g() = <!UNRESOLVED_REFERENCE!>innerProp<!>
|
fun g() = innerProp
|
||||||
fun h() = this@Inner.<!UNRESOLVED_REFERENCE!>innerFun<!>()
|
fun h() = this@Inner.innerFun()
|
||||||
fun i() = this@Inner.<!UNRESOLVED_REFERENCE!>innerProp<!>
|
fun i() = this@Inner.innerProp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -1,11 +1,11 @@
|
|||||||
// !WITH_NEW_INFERENCE
|
// !WITH_NEW_INFERENCE
|
||||||
val (a1, a2) = <!COMPONENT_FUNCTION_MISSING, COMPONENT_FUNCTION_MISSING!>A()<!>
|
val (a1, a2) = A()
|
||||||
val (b1: Int, b2: Int) = <!COMPONENT_FUNCTION_MISSING, COMPONENT_FUNCTION_MISSING!>A()<!>
|
val (b1: Int, b2: Int) = A()
|
||||||
val (c1) = <!COMPONENT_FUNCTION_MISSING, UNRESOLVED_REFERENCE!>unresolved<!>
|
val (c1) = <!COMPONENT_FUNCTION_MISSING, UNRESOLVED_REFERENCE!>unresolved<!>
|
||||||
|
|
||||||
<!WRONG_MODIFIER_TARGET!>private<!> val (d1) = <!COMPONENT_FUNCTION_MISSING!>A()<!>
|
<!WRONG_MODIFIER_TARGET!>private<!> val (d1) = A()
|
||||||
|
|
||||||
val (e1, _) = <!COMPONENT_FUNCTION_MISSING!>A()<!>
|
val (e1, _) = A()
|
||||||
|
|
||||||
<!UNRESOLVED_REFERENCE!>a1<!>
|
<!UNRESOLVED_REFERENCE!>a1<!>
|
||||||
<!UNRESOLVED_REFERENCE!>a2<!>
|
<!UNRESOLVED_REFERENCE!>a2<!>
|
||||||
|
|||||||
Vendored
-7
@@ -1,7 +0,0 @@
|
|||||||
val (a, b, c) = <!COMPONENT_FUNCTION_MISSING, COMPONENT_FUNCTION_MISSING, COMPONENT_FUNCTION_MISSING!>A<!NO_VALUE_FOR_PARAMETER!>()<!><!>
|
|
||||||
|
|
||||||
class A(val a: Int) {
|
|
||||||
operator fun component1() {}
|
|
||||||
operator fun component2() {}
|
|
||||||
operator fun component3() {}
|
|
||||||
}
|
|
||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
val (a, b, c) = A<!NO_VALUE_FOR_PARAMETER!>()<!>
|
val (a, b, c) = A<!NO_VALUE_FOR_PARAMETER!>()<!>
|
||||||
|
|
||||||
class A(val a: Int) {
|
class A(val a: Int) {
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
|
|
||||||
|
|
||||||
import kotlin.reflect.KProperty
|
|
||||||
|
|
||||||
class Delegate {
|
|
||||||
operator fun getValue(t: Any?, p: KProperty<*>): Int {
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val a: Int by <!DELEGATE_SPECIAL_FUNCTION_MISSING!>Delegate()<!>
|
|
||||||
|
|
||||||
class Foo {
|
|
||||||
val a: Int by <!DELEGATE_SPECIAL_FUNCTION_MISSING!>Delegate()<!>
|
|
||||||
}
|
|
||||||
|
|
||||||
fun foo() {
|
|
||||||
val a: Int by <!DELEGATE_SPECIAL_FUNCTION_MISSING!>Delegate()<!>
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
|
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
|
||||||
|
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
|
|||||||
Reference in New Issue
Block a user