FIR expressions: perform some names refactoring

FirAccess -> FirQualifiedAccess
FirAccessExpression -> FirQualifiedExpression
FirPropertyAssignment -> FirVariableAssignment
Introduce lValue & rValue in FirAssignment
Introduce separate indexes in FirArraySetCall
This commit is contained in:
Mikhail Glukhikh
2019-02-05 19:24:35 +03:00
parent 8ea4500ab4
commit f040eaff27
22 changed files with 188 additions and 176 deletions
@@ -253,8 +253,8 @@ internal fun generateIncrementOrDecrementBlock(
}
}
internal fun generateAccessExpression(session: FirSession, psi: PsiElement?, name: Name): FirAccessExpression =
FirAccessExpressionImpl(session, psi).apply {
internal fun generateAccessExpression(session: FirSession, psi: PsiElement?, name: Name): FirQualifiedAccessExpression =
FirQualifiedAccessExpressionImpl(session, psi).apply {
calleeReference = FirSimpleNamedReference(session, psi, name)
}
@@ -292,10 +292,10 @@ internal fun generateTemporaryVariable(
session: FirSession, psi: PsiElement?, specialName: String, initializer: FirExpression
): FirVariable = generateTemporaryVariable(session, psi, Name.special("<$specialName>"), initializer)
private fun FirModifiableAccess.initializeLValue(
private fun FirModifiableQualifiedAccess.initializeLValue(
session: FirSession,
left: KtExpression?,
convertQualified: KtQualifiedExpression.() -> FirAccess?
convertQualified: KtQualifiedExpression.() -> FirQualifiedAccess?
): FirReference {
return when (left) {
is KtSimpleNameExpression -> {
@@ -337,12 +337,12 @@ internal fun KtExpression?.generateAssignment(
val arrayExpression = this.arrayExpression
val arraySet = FirArraySetCallImpl(session, psi, value, operation).apply {
for (indexExpression in indexExpressions) {
arguments += indexExpression.convert()
indexes += indexExpression.convert()
}
}
if (arrayExpression is KtSimpleNameExpression) {
return arraySet.apply {
calleeReference = initializeLValue(session, arrayExpression) { convert() as? FirAccess }
lValue = initializeLValue(session, arrayExpression) { convert() as? FirQualifiedAccess }
}
}
return FirBlockImpl(session, arrayExpression).apply {
@@ -351,7 +351,7 @@ internal fun KtExpression?.generateAssignment(
session, this@generateAssignment, name,
arrayExpression?.convert() ?: FirErrorExpressionImpl(session, arrayExpression, "No array expression")
)
statements += arraySet.apply { calleeReference = FirSimpleNamedReference(session, arrayExpression, name) }
statements += arraySet.apply { lValue = FirSimpleNamedReference(session, arrayExpression, name) }
}
}
if (operation != FirOperation.ASSIGN &&
@@ -364,12 +364,12 @@ internal fun KtExpression?.generateAssignment(
session, this@generateAssignment, name,
this@generateAssignment?.convert() ?: FirErrorExpressionImpl(session, this@generateAssignment, "No LValue in assignment")
)
statements += FirPropertyAssignmentImpl(session, psi, value, operation).apply {
calleeReference = FirSimpleNamedReference(session, this@generateAssignment, name)
statements += FirVariableAssignmentImpl(session, psi, value, operation).apply {
lValue = FirSimpleNamedReference(session, this@generateAssignment, name)
}
}
}
return FirPropertyAssignmentImpl(session, psi, value, operation).apply {
calleeReference = initializeLValue(session, this@generateAssignment) { convert() as? FirAccess }
return FirVariableAssignmentImpl(session, psi, value, operation).apply {
lValue = initializeLValue(session, this@generateAssignment) { convert() as? FirQualifiedAccess }
}
}
@@ -1247,7 +1247,7 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
override fun visitQualifiedExpression(expression: KtQualifiedExpression, data: Unit): FirElement {
val selector = expression.selectorExpression
?: return FirErrorExpressionImpl(session, expression, "Qualified expression without selector")
val firSelector = selector.toFirExpression() as FirModifiableAccess
val firSelector = selector.toFirExpression() as FirModifiableQualifiedAccess
firSelector.safe = expression is KtSafeQualifiedExpression
firSelector.explicitReceiver = expression.receiverExpression.toFirExpression()
return firSelector
@@ -1255,14 +1255,14 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
override fun visitThisExpression(expression: KtThisExpression, data: Unit): FirElement {
val labelName = expression.getLabelName()
return FirAccessExpressionImpl(session, expression).apply {
return FirQualifiedAccessExpressionImpl(session, expression).apply {
calleeReference = FirExplicitThisReference(session, expression, labelName)
}
}
override fun visitSuperExpression(expression: KtSuperExpression, data: Unit): FirElement {
val superType = expression.superTypeQualifier
return FirAccessExpressionImpl(session, expression).apply {
return FirQualifiedAccessExpressionImpl(session, expression).apply {
calleeReference = FirExplicitSuperReference(session, expression, superType.toFirOrImplicitType())
}
}
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.declarations.FirErrorDeclaration
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.expressions.FirErrorExpression
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirAccess
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionStub
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
@@ -72,15 +72,15 @@ class RawFirBuilderTotalKotlinTestCase : AbstractRawFirBuilderTestCase() {
errorExpression.psi?.let { println(it) }
}
override fun visitAccess(access: FirAccess) {
val calleeReference = access.calleeReference
override fun visitQualifiedAccess(qualifiedAccess: FirQualifiedAccess) {
val calleeReference = qualifiedAccess.calleeReference
if (calleeReference is FirErrorNamedReference) {
errorReferences++
println(calleeReference.errorReason)
} else {
normalReferences++
}
super.visitAccess(access)
super.visitQualifiedAccess(qualifiedAccess)
}
override fun visitExpression(expression: FirExpression) {
@@ -711,11 +711,11 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
print(">")
}
override fun visitAccess(access: FirAccess) {
val explicitReceiver = access.explicitReceiver
override fun visitQualifiedAccess(qualifiedAccess: FirQualifiedAccess) {
val explicitReceiver = qualifiedAccess.explicitReceiver
if (explicitReceiver != null) {
explicitReceiver.accept(this)
if (access.safe) {
if (qualifiedAccess.safe) {
print("?.")
} else {
print(".")
@@ -730,39 +730,39 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
callableReferenceAccess.calleeReference.accept(this)
}
override fun visitAccessExpression(accessExpression: FirAccessExpression) {
accessExpression.annotations.renderAnnotations()
visitAccess(accessExpression)
accessExpression.calleeReference.accept(this)
override fun visitQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression) {
qualifiedAccessExpression.annotations.renderAnnotations()
visitQualifiedAccess(qualifiedAccessExpression)
qualifiedAccessExpression.calleeReference.accept(this)
}
override fun visitAssignment(assignment: FirAssignment) {
print(assignment.operation.operator)
print(" ")
assignment.value.accept(this)
assignment.rValue.accept(this)
}
override fun visitPropertyAssignment(propertyAssignment: FirPropertyAssignment) {
propertyAssignment.annotations.renderAnnotations()
visitAccess(propertyAssignment)
propertyAssignment.calleeReference.accept(this)
override fun visitVariableAssignment(variableAssignment: FirVariableAssignment) {
variableAssignment.annotations.renderAnnotations()
visitQualifiedAccess(variableAssignment)
variableAssignment.lValue.accept(this)
print(" ")
visitAssignment(propertyAssignment)
visitAssignment(variableAssignment)
}
override fun visitArraySetCall(arraySetCall: FirArraySetCall) {
arraySetCall.annotations.renderAnnotations()
visitAccess(arraySetCall)
arraySetCall.calleeReference.accept(this)
visitQualifiedAccess(arraySetCall)
arraySetCall.lValue.accept(this)
print("[")
arraySetCall.arguments.renderSeparated()
arraySetCall.indexes.renderSeparated()
print("] ")
visitAssignment(arraySetCall)
}
override fun visitFunctionCall(functionCall: FirFunctionCall) {
functionCall.annotations.renderAnnotations()
visitAccess(functionCall)
visitQualifiedAccess(functionCall)
functionCall.calleeReference.accept(this)
if (functionCall.typeArguments.isNotEmpty()) {
print("<")
@@ -9,11 +9,19 @@ import org.jetbrains.kotlin.fir.VisitedSupertype
import org.jetbrains.kotlin.fir.visitors.FirVisitor
interface FirArraySetCall : @VisitedSupertype FirCall, FirAssignment {
// NB: arguments of this thing are indexes AND rvalue
val indexes: List<FirExpression>
override val arguments get() = indexes + rValue
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitArraySetCall(this, data)
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
super<FirCall>.acceptChildren(visitor, data)
for (index in indexes) {
index.accept(visitor, data)
}
acceptAnnotations(visitor, data)
super<FirAssignment>.acceptChildren(visitor, data)
}
}
@@ -5,10 +5,13 @@
package org.jetbrains.kotlin.fir.expressions
import org.jetbrains.kotlin.fir.FirReference
import org.jetbrains.kotlin.fir.visitors.FirVisitor
interface FirAssignment : FirAccess {
val value: FirExpression
interface FirAssignment : FirQualifiedAccess {
val lValue: FirReference get() = calleeReference
val rValue: FirExpression
val operation: FirOperation
@@ -16,7 +19,7 @@ interface FirAssignment : FirAccess {
visitor.visitAssignment(this, data)
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
value.accept(visitor, data)
rValue.accept(visitor, data)
super.acceptChildren(visitor, data)
}
}
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.expressions
import org.jetbrains.kotlin.fir.visitors.FirVisitor
interface FirCallableReferenceAccess : FirAccessExpression {
interface FirCallableReferenceAccess : FirQualifiedAccessExpression {
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitCallableReferenceAccess(this, data)
}
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.VisitedSupertype
import org.jetbrains.kotlin.fir.types.FirTypeProjectionContainer
import org.jetbrains.kotlin.fir.visitors.FirVisitor
interface FirFunctionCall : @VisitedSupertype FirCall, FirAccess, FirTypeProjectionContainer {
interface FirFunctionCall : @VisitedSupertype FirCall, FirQualifiedAccess, FirTypeProjectionContainer {
override val calleeReference: FirNamedReference
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
@@ -23,6 +23,6 @@ interface FirFunctionCall : @VisitedSupertype FirCall, FirAccess, FirTypeProject
for (typeArgument in typeArguments) {
typeArgument.accept(visitor, data)
}
super<FirAccess>.acceptChildren(visitor, data)
super<FirQualifiedAccess>.acceptChildren(visitor, data)
}
}
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.expressions
import org.jetbrains.kotlin.fir.FirReference
import org.jetbrains.kotlin.fir.visitors.FirVisitor
interface FirAccess : FirStatement {
interface FirQualifiedAccess : FirStatement {
val calleeReference: FirReference
val safe: Boolean get() = false
@@ -16,7 +16,7 @@ interface FirAccess : FirStatement {
val explicitReceiver: FirExpression? get() = null
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitAccess(this, data)
visitor.visitQualifiedAccess(this, data)
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
calleeReference.accept(visitor, data)
@@ -8,11 +8,11 @@ package org.jetbrains.kotlin.fir.expressions
import org.jetbrains.kotlin.fir.VisitedSupertype
import org.jetbrains.kotlin.fir.visitors.FirVisitor
interface FirAccessExpression : @VisitedSupertype FirAccess, FirExpression {
interface FirQualifiedAccessExpression : @VisitedSupertype FirQualifiedAccess, FirExpression {
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitAccessExpression(this, data)
visitor.visitQualifiedAccessExpression(this, data)
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
super<FirAccess>.acceptChildren(visitor, data)
super<FirQualifiedAccess>.acceptChildren(visitor, data)
}
}
@@ -7,7 +7,8 @@ package org.jetbrains.kotlin.fir.expressions
import org.jetbrains.kotlin.fir.visitors.FirVisitor
interface FirPropertyAssignment : FirAssignment {
interface FirVariableAssignment : FirAssignment {
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitPropertyAssignment(this, data)
visitor.visitVariableAssignment(this, data)
}
@@ -7,22 +7,30 @@ package org.jetbrains.kotlin.fir.expressions.impl
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirReference
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirOperation
import org.jetbrains.kotlin.fir.expressions.FirPropertyAssignment
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
import org.jetbrains.kotlin.fir.transformSingle
import org.jetbrains.kotlin.fir.visitors.FirTransformer
abstract class FirAbstractAssignment(
session: FirSession,
psi: PsiElement?,
final override var value: FirExpression,
final override var rValue: FirExpression,
final override val operation: FirOperation,
safe: Boolean = false
) : FirAbstractAccess(session, psi, safe), FirPropertyAssignment {
) : FirAbstractQualifiedAccess(session, psi, safe), FirVariableAssignment {
override var lValue: FirReference
get() = calleeReference
set(value) {
calleeReference = value
}
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
value = value.transformSingle(transformer, data)
return super<FirAbstractAccess>.transformChildren(transformer, data)
rValue = rValue.transformSingle(transformer, data)
return super<FirAbstractQualifiedAccess>.transformChildren(transformer, data)
}
}
@@ -10,11 +10,11 @@ import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.visitors.FirTransformer
abstract class FirAbstractAccess(
abstract class FirAbstractQualifiedAccess(
session: FirSession,
psi: PsiElement?,
final override var safe: Boolean = false
) : FirAbstractStatement(session, psi), FirModifiableAccess {
) : FirAbstractStatement(session, psi), FirModifiableQualifiedAccess {
final override lateinit var calleeReference: FirReference
final override var explicitReceiver: FirExpression? = null
@@ -22,13 +22,13 @@ class FirArraySetCallImpl(
value: FirExpression,
operation: FirOperation
) : FirAbstractAssignment(session, psi, value, operation, false), FirArraySetCall {
override val arguments = mutableListOf<FirExpression>()
override val indexes = mutableListOf<FirExpression>()
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
super<FirArraySetCall>.accept(visitor, data)
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
arguments.transformInplace(transformer, data)
indexes.transformInplace(transformer, data)
return super<FirAbstractAssignment>.transformChildren(transformer, data)
}
@@ -6,14 +6,10 @@
package org.jetbrains.kotlin.fir.expressions.impl
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess
import org.jetbrains.kotlin.fir.transformInplace
import org.jetbrains.kotlin.fir.visitors.FirTransformer
class FirCallableReferenceAccessImpl(
session: FirSession,
psi: PsiElement?
) : FirAbstractAccess(session, psi), FirCallableReferenceAccess
) : FirAbstractQualifiedAccess(session, psi), FirCallableReferenceAccess
@@ -16,7 +16,7 @@ class FirFunctionCallImpl(
session: FirSession,
psi: PsiElement?,
override var safe: Boolean = false
) : FirAbstractCall(session, psi), FirFunctionCall, FirModifiableAccess {
) : FirAbstractCall(session, psi), FirFunctionCall, FirModifiableQualifiedAccess {
override val typeArguments = mutableListOf<FirTypeProjection>()
override lateinit var calleeReference: FirNamedReference
@@ -6,9 +6,9 @@
package org.jetbrains.kotlin.fir.expressions.impl
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirAccess
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
interface FirModifiableAccess : FirAccess {
interface FirModifiableQualifiedAccess : FirQualifiedAccess {
override var safe: Boolean
get() = super.safe
set(_) {}
@@ -6,15 +6,11 @@
package org.jetbrains.kotlin.fir.expressions.impl
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.expressions.FirAccessExpression
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.transformInplace
import org.jetbrains.kotlin.fir.visitors.FirTransformer
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
class FirAccessExpressionImpl(
class FirQualifiedAccessExpressionImpl(
session: FirSession,
psi: PsiElement?,
safe: Boolean = false
) : FirAbstractAccess(session, psi, safe), FirAccessExpression
) : FirAbstractQualifiedAccess(session, psi, safe), FirQualifiedAccessExpression
@@ -9,12 +9,12 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirOperation
import org.jetbrains.kotlin.fir.expressions.FirPropertyAssignment
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
class FirPropertyAssignmentImpl(
class FirVariableAssignmentImpl(
session: FirSession,
psi: PsiElement?,
value: FirExpression,
operation: FirOperation,
safe: Boolean = false
) : FirAbstractAssignment(session, psi, value, operation, safe), FirPropertyAssignment
) : FirAbstractAssignment(session, psi, value, operation, safe), FirVariableAssignment
@@ -152,30 +152,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformElement(statement, data)
}
open fun transformAccess(access: FirAccess, data: D): CompositeTransformResult<FirStatement> {
return transformStatement(access, data)
}
open fun transformAccessExpression(accessExpression: FirAccessExpression, data: D): CompositeTransformResult<FirStatement> {
return transformAccess(accessExpression, data)
}
open fun transformCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess, data: D): CompositeTransformResult<FirStatement> {
return transformAccessExpression(callableReferenceAccess, data)
}
open fun transformAssignment(assignment: FirAssignment, data: D): CompositeTransformResult<FirStatement> {
return transformAccess(assignment, data)
}
open fun transformPropertyAssignment(propertyAssignment: FirPropertyAssignment, data: D): CompositeTransformResult<FirStatement> {
return transformAssignment(propertyAssignment, data)
}
open fun transformModifiableAccess(modifiableAccess: FirModifiableAccess, data: D): CompositeTransformResult<FirStatement> {
return transformAccess(modifiableAccess, data)
}
open fun transformClass(klass: FirClass, data: D): CompositeTransformResult<FirStatement> {
return transformStatement(klass, data)
}
@@ -288,6 +264,30 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformLoop(whileLoop, data)
}
open fun transformQualifiedAccess(qualifiedAccess: FirQualifiedAccess, data: D): CompositeTransformResult<FirStatement> {
return transformStatement(qualifiedAccess, data)
}
open fun transformAssignment(assignment: FirAssignment, data: D): CompositeTransformResult<FirStatement> {
return transformQualifiedAccess(assignment, data)
}
open fun transformVariableAssignment(variableAssignment: FirVariableAssignment, data: D): CompositeTransformResult<FirStatement> {
return transformAssignment(variableAssignment, data)
}
open fun transformModifiableQualifiedAccess(modifiableQualifiedAccess: FirModifiableQualifiedAccess, data: D): CompositeTransformResult<FirStatement> {
return transformQualifiedAccess(modifiableQualifiedAccess, data)
}
open fun transformQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression, data: D): CompositeTransformResult<FirStatement> {
return transformQualifiedAccess(qualifiedAccessExpression, data)
}
open fun transformCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess, data: D): CompositeTransformResult<FirStatement> {
return transformQualifiedAccessExpression(callableReferenceAccess, data)
}
open fun <E : FirElement> transformTargetElement(targetElement: E, data: D): CompositeTransformResult<E> {
return transformElement(targetElement, data)
}
@@ -352,14 +352,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformElement(whenBranch, data)
}
final override fun visitAccess(access: FirAccess, data: D): CompositeTransformResult<FirElement> {
return transformAccess(access, data)
}
final override fun visitAccessExpression(accessExpression: FirAccessExpression, data: D): CompositeTransformResult<FirElement> {
return transformAccessExpression(accessExpression, data)
}
final override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: D): CompositeTransformResult<FirElement> {
return transformAnnotationCall(annotationCall, data)
}
@@ -532,10 +524,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformMemberDeclaration(memberDeclaration, data)
}
final override fun visitModifiableAccess(modifiableAccess: FirModifiableAccess, data: D): CompositeTransformResult<FirElement> {
return transformModifiableAccess(modifiableAccess, data)
}
final override fun visitModifiableClass(modifiableClass: FirModifiableClass, data: D): CompositeTransformResult<FirElement> {
return transformModifiableClass(modifiableClass, data)
}
@@ -544,6 +532,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformModifiableFunction(modifiableFunction, data)
}
final override fun visitModifiableQualifiedAccess(modifiableQualifiedAccess: FirModifiableQualifiedAccess, data: D): CompositeTransformResult<FirElement> {
return transformModifiableQualifiedAccess(modifiableQualifiedAccess, data)
}
final override fun visitNamedDeclaration(namedDeclaration: FirNamedDeclaration, data: D): CompositeTransformResult<FirElement> {
return transformNamedDeclaration(namedDeclaration, data)
}
@@ -572,8 +564,12 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformPropertyAccessor(propertyAccessor, data)
}
final override fun visitPropertyAssignment(propertyAssignment: FirPropertyAssignment, data: D): CompositeTransformResult<FirElement> {
return transformPropertyAssignment(propertyAssignment, data)
final override fun visitQualifiedAccess(qualifiedAccess: FirQualifiedAccess, data: D): CompositeTransformResult<FirElement> {
return transformQualifiedAccess(qualifiedAccess, data)
}
final override fun visitQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression, data: D): CompositeTransformResult<FirElement> {
return transformQualifiedAccessExpression(qualifiedAccessExpression, data)
}
final override fun visitReference(reference: FirReference, data: D): CompositeTransformResult<FirElement> {
@@ -676,6 +672,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformVariable(variable, data)
}
final override fun visitVariableAssignment(variableAssignment: FirVariableAssignment, data: D): CompositeTransformResult<FirElement> {
return transformVariableAssignment(variableAssignment, data)
}
final override fun visitWhenBranch(whenBranch: FirWhenBranch, data: D): CompositeTransformResult<FirElement> {
return transformWhenBranch(whenBranch, data)
}
@@ -152,30 +152,6 @@ abstract class FirVisitor<out R, in D> {
return visitElement(statement, data)
}
open fun visitAccess(access: FirAccess, data: D): R {
return visitStatement(access, data)
}
open fun visitAccessExpression(accessExpression: FirAccessExpression, data: D): R {
return visitAccess(accessExpression, data)
}
open fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess, data: D): R {
return visitAccessExpression(callableReferenceAccess, data)
}
open fun visitAssignment(assignment: FirAssignment, data: D): R {
return visitAccess(assignment, data)
}
open fun visitPropertyAssignment(propertyAssignment: FirPropertyAssignment, data: D): R {
return visitAssignment(propertyAssignment, data)
}
open fun visitModifiableAccess(modifiableAccess: FirModifiableAccess, data: D): R {
return visitAccess(modifiableAccess, data)
}
open fun visitClass(klass: FirClass, data: D): R {
return visitStatement(klass, data)
}
@@ -288,6 +264,30 @@ abstract class FirVisitor<out R, in D> {
return visitLoop(whileLoop, data)
}
open fun visitQualifiedAccess(qualifiedAccess: FirQualifiedAccess, data: D): R {
return visitStatement(qualifiedAccess, data)
}
open fun visitAssignment(assignment: FirAssignment, data: D): R {
return visitQualifiedAccess(assignment, data)
}
open fun visitVariableAssignment(variableAssignment: FirVariableAssignment, data: D): R {
return visitAssignment(variableAssignment, data)
}
open fun visitModifiableQualifiedAccess(modifiableQualifiedAccess: FirModifiableQualifiedAccess, data: D): R {
return visitQualifiedAccess(modifiableQualifiedAccess, data)
}
open fun visitQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression, data: D): R {
return visitQualifiedAccess(qualifiedAccessExpression, data)
}
open fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess, data: D): R {
return visitQualifiedAccessExpression(callableReferenceAccess, data)
}
open fun visitTargetElement(targetElement: FirTargetElement, data: D): R {
return visitElement(targetElement, data)
}
@@ -152,30 +152,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(statement, null)
}
open fun visitAccess(access: FirAccess) {
visitStatement(access, null)
}
open fun visitAccessExpression(accessExpression: FirAccessExpression) {
visitAccess(accessExpression, null)
}
open fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess) {
visitAccessExpression(callableReferenceAccess, null)
}
open fun visitAssignment(assignment: FirAssignment) {
visitAccess(assignment, null)
}
open fun visitPropertyAssignment(propertyAssignment: FirPropertyAssignment) {
visitAssignment(propertyAssignment, null)
}
open fun visitModifiableAccess(modifiableAccess: FirModifiableAccess) {
visitAccess(modifiableAccess, null)
}
open fun visitClass(klass: FirClass) {
visitStatement(klass, null)
}
@@ -288,6 +264,30 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitLoop(whileLoop, null)
}
open fun visitQualifiedAccess(qualifiedAccess: FirQualifiedAccess) {
visitStatement(qualifiedAccess, null)
}
open fun visitAssignment(assignment: FirAssignment) {
visitQualifiedAccess(assignment, null)
}
open fun visitVariableAssignment(variableAssignment: FirVariableAssignment) {
visitAssignment(variableAssignment, null)
}
open fun visitModifiableQualifiedAccess(modifiableQualifiedAccess: FirModifiableQualifiedAccess) {
visitQualifiedAccess(modifiableQualifiedAccess, null)
}
open fun visitQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression) {
visitQualifiedAccess(qualifiedAccessExpression, null)
}
open fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess) {
visitQualifiedAccessExpression(callableReferenceAccess, null)
}
open fun visitTargetElement(targetElement: FirTargetElement) {
visitElement(targetElement, null)
}
@@ -352,14 +352,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(whenBranch, null)
}
final override fun visitAccess(access: FirAccess, data: Nothing?) {
visitAccess(access)
}
final override fun visitAccessExpression(accessExpression: FirAccessExpression, data: Nothing?) {
visitAccessExpression(accessExpression)
}
final override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: Nothing?) {
visitAnnotationCall(annotationCall)
}
@@ -532,10 +524,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitMemberDeclaration(memberDeclaration)
}
final override fun visitModifiableAccess(modifiableAccess: FirModifiableAccess, data: Nothing?) {
visitModifiableAccess(modifiableAccess)
}
final override fun visitModifiableClass(modifiableClass: FirModifiableClass, data: Nothing?) {
visitModifiableClass(modifiableClass)
}
@@ -544,6 +532,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitModifiableFunction(modifiableFunction)
}
final override fun visitModifiableQualifiedAccess(modifiableQualifiedAccess: FirModifiableQualifiedAccess, data: Nothing?) {
visitModifiableQualifiedAccess(modifiableQualifiedAccess)
}
final override fun visitNamedDeclaration(namedDeclaration: FirNamedDeclaration, data: Nothing?) {
visitNamedDeclaration(namedDeclaration)
}
@@ -572,8 +564,12 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitPropertyAccessor(propertyAccessor)
}
final override fun visitPropertyAssignment(propertyAssignment: FirPropertyAssignment, data: Nothing?) {
visitPropertyAssignment(propertyAssignment)
final override fun visitQualifiedAccess(qualifiedAccess: FirQualifiedAccess, data: Nothing?) {
visitQualifiedAccess(qualifiedAccess)
}
final override fun visitQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression, data: Nothing?) {
visitQualifiedAccessExpression(qualifiedAccessExpression)
}
final override fun visitReference(reference: FirReference, data: Nothing?) {
@@ -676,6 +672,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitVariable(variable)
}
final override fun visitVariableAssignment(variableAssignment: FirVariableAssignment, data: Nothing?) {
visitVariableAssignment(variableAssignment)
}
final override fun visitWhenBranch(whenBranch: FirWhenBranch, data: Nothing?) {
visitWhenBranch(whenBranch)
}