[FIR] Bind return expression to function symbol instead of function itself
This commit is contained in:
committed by
TeamCityServer
parent
245bc7c8e2
commit
714c2a8f93
+6
@@ -14922,6 +14922,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
||||
runTest("compiler/testData/codegen/box/fir/ClassBuilder.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classCanNotBeCastedToVoid.kt")
|
||||
public void testClassCanNotBeCastedToVoid() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fir/classCanNotBeCastedToVoid.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ConstValAccess.kt")
|
||||
public void testConstValAccess() throws Exception {
|
||||
|
||||
@@ -8,9 +8,12 @@ package org.jetbrains.kotlin.fir
|
||||
abstract class FirAbstractTarget<E : FirTargetElement>(
|
||||
override val labelName: String?
|
||||
) : FirTarget<E> {
|
||||
override lateinit var labeledElement: E
|
||||
protected abstract var _labeledElement: E
|
||||
|
||||
final override val labeledElement: E
|
||||
get() = _labeledElement
|
||||
|
||||
override fun bind(element: E) {
|
||||
labeledElement = element
|
||||
_labeledElement = element
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,17 @@
|
||||
package org.jetbrains.kotlin.fir
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
|
||||
class FirFunctionTarget(
|
||||
labelName: String?,
|
||||
val isLambda: Boolean
|
||||
) : FirAbstractTarget<FirFunction<*>>(labelName)
|
||||
) : FirAbstractTarget<FirFunction<*>>(labelName) {
|
||||
private lateinit var targetSymbol: FirFunctionSymbol<*>
|
||||
|
||||
override var _labeledElement: FirFunction<*>
|
||||
get() = targetSymbol.fir
|
||||
set(value) {
|
||||
targetSymbol = value.symbol
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,4 +9,6 @@ import org.jetbrains.kotlin.fir.expressions.FirLoop
|
||||
|
||||
class FirLoopTarget(
|
||||
labelName: String?
|
||||
) : FirAbstractTarget<FirLoop>(labelName)
|
||||
) : FirAbstractTarget<FirLoop>(labelName) {
|
||||
override lateinit var _labeledElement: FirLoop
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user