FIR: add new qualified access implementation (FirThisReceiverExpression)
This commit is contained in:
+1
-4
@@ -896,10 +896,7 @@ class ExpressionsConverter(
|
|||||||
*/
|
*/
|
||||||
private fun convertThisExpression(thisExpression: LighterASTNode): FirQualifiedAccessExpression {
|
private fun convertThisExpression(thisExpression: LighterASTNode): FirQualifiedAccessExpression {
|
||||||
val label: String? = thisExpression.getLabelName()
|
val label: String? = thisExpression.getLabelName()
|
||||||
|
return FirThisReceiverExpressionImpl(null, FirExplicitThisReference(null, label))
|
||||||
return FirQualifiedAccessExpressionImpl(null).apply {
|
|
||||||
calleeReference = FirExplicitThisReference(null, label)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1182,9 +1182,7 @@ class RawFirBuilder(session: FirSession, val stubMode: Boolean) : BaseFirBuilder
|
|||||||
|
|
||||||
override fun visitThisExpression(expression: KtThisExpression, data: Unit): FirElement {
|
override fun visitThisExpression(expression: KtThisExpression, data: Unit): FirElement {
|
||||||
val labelName = expression.getLabelName()
|
val labelName = expression.getLabelName()
|
||||||
return FirQualifiedAccessExpressionImpl(expression).apply {
|
return FirThisReceiverExpressionImpl(expression, FirExplicitThisReference(expression, labelName))
|
||||||
calleeReference = FirExplicitThisReference(expression, labelName)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitSuperExpression(expression: KtSuperExpression, data: Unit): FirElement {
|
override fun visitSuperExpression(expression: KtSuperExpression, data: Unit): FirElement {
|
||||||
|
|||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.fir.expressions.impl
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirThisReference
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||||
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
|
class FirThisReceiverExpressionImpl(
|
||||||
|
psi: PsiElement?,
|
||||||
|
override var calleeReference: FirThisReference
|
||||||
|
) : FirModifiableQualifiedAccess<FirThisReference>, FirQualifiedAccessExpression(psi) {
|
||||||
|
override var explicitReceiver: FirExpression?
|
||||||
|
get() = null
|
||||||
|
set(_) {}
|
||||||
|
|
||||||
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
|
calleeReference = calleeReference.transformSingle(transformer, data)
|
||||||
|
dispatchReceiver.transformSingle(transformer, data)
|
||||||
|
extensionReceiver.transformSingle(transformer, data)
|
||||||
|
|
||||||
|
return super<FirQualifiedAccessExpression>.transformChildren(transformer, data)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user