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 {
|
||||
val label: String? = thisExpression.getLabelName()
|
||||
|
||||
return FirQualifiedAccessExpressionImpl(null).apply {
|
||||
calleeReference = FirExplicitThisReference(null, label)
|
||||
}
|
||||
return FirThisReceiverExpressionImpl(null, FirExplicitThisReference(null, label))
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1182,9 +1182,7 @@ class RawFirBuilder(session: FirSession, val stubMode: Boolean) : BaseFirBuilder
|
||||
|
||||
override fun visitThisExpression(expression: KtThisExpression, data: Unit): FirElement {
|
||||
val labelName = expression.getLabelName()
|
||||
return FirQualifiedAccessExpressionImpl(expression).apply {
|
||||
calleeReference = FirExplicitThisReference(expression, labelName)
|
||||
}
|
||||
return FirThisReceiverExpressionImpl(expression, FirExplicitThisReference(expression, labelName))
|
||||
}
|
||||
|
||||
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