FIR: Simplify FirQualifiedAccess hiearchy
Mostly, it's getting rid of FirQualifiedAccessWithoutCallee and FirModifiableQualifiedAccess The latter was only used during FIR building to set explicit receiver that might be done by replace call on explicit receiver The problem with replaceExplicitReceiver is that for FirComponentCall explicitReceiver should be not null, so it's needed to perform those tricks at the generatot
This commit is contained in:
+2
-8
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
|||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
|
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.*
|
import org.jetbrains.kotlin.fir.expressions.builder.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock
|
import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirStubStatement
|
import org.jetbrains.kotlin.fir.expressions.impl.FirStubStatement
|
||||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||||
@@ -462,12 +461,7 @@ private fun FirExpression.checkReceiver(name: String?): Boolean {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun FirModifiableQualifiedAccess.wrapWithSafeCall(receiver: FirExpression): FirSafeCallExpression {
|
fun FirQualifiedAccess.wrapWithSafeCall(receiver: FirExpression): FirSafeCallExpression {
|
||||||
// TODO: Refactor tree to make FirModifiableQualifiedAccess inherit FirQualifiedAccess
|
|
||||||
require(this is FirQualifiedAccess) {
|
|
||||||
"Safe-call instances are expected to be FirQualifiedAccess, but ${this::class} was found"
|
|
||||||
}
|
|
||||||
|
|
||||||
val checkedSafeCallSubject = buildCheckedSafeCallSubject {
|
val checkedSafeCallSubject = buildCheckedSafeCallSubject {
|
||||||
@OptIn(FirContractViolation::class)
|
@OptIn(FirContractViolation::class)
|
||||||
this.originalReceiverRef = FirExpressionRef<FirExpression>().apply {
|
this.originalReceiverRef = FirExpressionRef<FirExpression>().apply {
|
||||||
@@ -475,7 +469,7 @@ fun FirModifiableQualifiedAccess.wrapWithSafeCall(receiver: FirExpression): FirS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
explicitReceiver = checkedSafeCallSubject
|
replaceExplicitReceiver(checkedSafeCallSubject)
|
||||||
return buildSafeCallExpression {
|
return buildSafeCallExpression {
|
||||||
this.receiver = receiver
|
this.receiver = receiver
|
||||||
@OptIn(FirContractViolation::class)
|
@OptIn(FirContractViolation::class)
|
||||||
|
|||||||
+2
-3
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
|
|||||||
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
|
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.*
|
import org.jetbrains.kotlin.fir.expressions.builder.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock
|
import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.buildSingleExpressionBlock
|
import org.jetbrains.kotlin.fir.expressions.impl.buildSingleExpressionBlock
|
||||||
import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir
|
import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir
|
||||||
@@ -475,12 +474,12 @@ class ExpressionsConverter(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
(firSelector as? FirModifiableQualifiedAccess)?.let {
|
(firSelector as? FirQualifiedAccess)?.let {
|
||||||
if (isSafe) {
|
if (isSafe) {
|
||||||
return it.wrapWithSafeCall(firReceiver!!)
|
return it.wrapWithSafeCall(firReceiver!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
it.explicitReceiver = firReceiver
|
it.replaceExplicitReceiver(firReceiver)
|
||||||
}
|
}
|
||||||
return firSelector
|
return firSelector
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
|
|||||||
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
|
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.*
|
import org.jetbrains.kotlin.fir.expressions.builder.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock
|
import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock
|
||||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.builder.*
|
import org.jetbrains.kotlin.fir.references.builder.*
|
||||||
@@ -1810,14 +1809,14 @@ class RawFirBuilder(
|
|||||||
expression.toFirSourceElement(), ConeSimpleDiagnostic("Qualified expression without selector", DiagnosticKind.Syntax),
|
expression.toFirSourceElement(), ConeSimpleDiagnostic("Qualified expression without selector", DiagnosticKind.Syntax),
|
||||||
)
|
)
|
||||||
val firSelector = selector.toFirExpression("Incorrect selector expression")
|
val firSelector = selector.toFirExpression("Incorrect selector expression")
|
||||||
if (firSelector is FirModifiableQualifiedAccess) {
|
if (firSelector is FirQualifiedAccess) {
|
||||||
val receiver = expression.receiverExpression.toFirExpression("Incorrect receiver expression")
|
val receiver = expression.receiverExpression.toFirExpression("Incorrect receiver expression")
|
||||||
|
|
||||||
if (expression is KtSafeQualifiedExpression) {
|
if (expression is KtSafeQualifiedExpression) {
|
||||||
return firSelector.wrapWithSafeCall(receiver)
|
return firSelector.wrapWithSafeCall(receiver)
|
||||||
}
|
}
|
||||||
|
|
||||||
firSelector.explicitReceiver = receiver
|
firSelector.replaceExplicitReceiver(receiver)
|
||||||
}
|
}
|
||||||
return firSelector
|
return firSelector
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -34,6 +34,8 @@ abstract class FirCallableReferenceAccess : FirQualifiedAccessExpression() {
|
|||||||
|
|
||||||
abstract override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
abstract override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
||||||
|
|
||||||
|
abstract override fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?)
|
||||||
|
|
||||||
abstract fun replaceCalleeReference(newCalleeReference: FirNamedReference)
|
abstract fun replaceCalleeReference(newCalleeReference: FirNamedReference)
|
||||||
|
|
||||||
abstract override fun replaceCalleeReference(newCalleeReference: FirReference)
|
abstract override fun replaceCalleeReference(newCalleeReference: FirReference)
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ abstract class FirComponentCall : FirFunctionCall() {
|
|||||||
|
|
||||||
abstract override fun replaceCalleeReference(newCalleeReference: FirReference)
|
abstract override fun replaceCalleeReference(newCalleeReference: FirReference)
|
||||||
|
|
||||||
|
abstract override fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?)
|
||||||
|
|
||||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirComponentCall
|
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirComponentCall
|
||||||
|
|
||||||
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirComponentCall
|
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirComponentCall
|
||||||
|
|||||||
+4
-4
@@ -18,25 +18,25 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
|
|
||||||
abstract class FirDelegatedConstructorCall : FirPureAbstractElement(), FirResolvable, FirCall {
|
abstract class FirDelegatedConstructorCall : FirPureAbstractElement(), FirResolvable, FirCall {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract override val calleeReference: FirReference
|
|
||||||
abstract override val annotations: List<FirAnnotationCall>
|
abstract override val annotations: List<FirAnnotationCall>
|
||||||
abstract override val argumentList: FirArgumentList
|
abstract override val argumentList: FirArgumentList
|
||||||
abstract val constructedTypeRef: FirTypeRef
|
abstract val constructedTypeRef: FirTypeRef
|
||||||
abstract val dispatchReceiver: FirExpression
|
abstract val dispatchReceiver: FirExpression
|
||||||
|
abstract override val calleeReference: FirReference
|
||||||
abstract val isThis: Boolean
|
abstract val isThis: Boolean
|
||||||
abstract val isSuper: Boolean
|
abstract val isSuper: Boolean
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitDelegatedConstructorCall(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitDelegatedConstructorCall(this, data)
|
||||||
|
|
||||||
abstract override fun replaceCalleeReference(newCalleeReference: FirReference)
|
|
||||||
|
|
||||||
abstract override fun replaceArgumentList(newArgumentList: FirArgumentList)
|
abstract override fun replaceArgumentList(newArgumentList: FirArgumentList)
|
||||||
|
|
||||||
abstract fun replaceConstructedTypeRef(newConstructedTypeRef: FirTypeRef)
|
abstract fun replaceConstructedTypeRef(newConstructedTypeRef: FirTypeRef)
|
||||||
|
|
||||||
abstract override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirDelegatedConstructorCall
|
abstract override fun replaceCalleeReference(newCalleeReference: FirReference)
|
||||||
|
|
||||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirDelegatedConstructorCall
|
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirDelegatedConstructorCall
|
||||||
|
|
||||||
abstract fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirDelegatedConstructorCall
|
abstract fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirDelegatedConstructorCall
|
||||||
|
|
||||||
|
abstract override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirDelegatedConstructorCall
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-5
@@ -21,11 +21,11 @@ abstract class FirExpressionWithSmartcast : FirQualifiedAccessExpression() {
|
|||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract override val typeRef: FirTypeRef
|
abstract override val typeRef: FirTypeRef
|
||||||
abstract override val annotations: List<FirAnnotationCall>
|
abstract override val annotations: List<FirAnnotationCall>
|
||||||
|
abstract override val calleeReference: FirReference
|
||||||
abstract override val typeArguments: List<FirTypeProjection>
|
abstract override val typeArguments: List<FirTypeProjection>
|
||||||
abstract override val explicitReceiver: FirExpression?
|
abstract override val explicitReceiver: FirExpression?
|
||||||
abstract override val dispatchReceiver: FirExpression
|
abstract override val dispatchReceiver: FirExpression
|
||||||
abstract override val extensionReceiver: FirExpression
|
abstract override val extensionReceiver: FirExpression
|
||||||
abstract override val calleeReference: FirReference
|
|
||||||
abstract val originalExpression: FirQualifiedAccessExpression
|
abstract val originalExpression: FirQualifiedAccessExpression
|
||||||
abstract val typesFromSmartCast: Collection<ConeKotlinType>
|
abstract val typesFromSmartCast: Collection<ConeKotlinType>
|
||||||
abstract val originalType: FirTypeRef
|
abstract val originalType: FirTypeRef
|
||||||
@@ -34,12 +34,16 @@ abstract class FirExpressionWithSmartcast : FirQualifiedAccessExpression() {
|
|||||||
|
|
||||||
abstract override fun replaceTypeRef(newTypeRef: FirTypeRef)
|
abstract override fun replaceTypeRef(newTypeRef: FirTypeRef)
|
||||||
|
|
||||||
abstract override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
|
||||||
|
|
||||||
abstract override fun replaceCalleeReference(newCalleeReference: FirReference)
|
abstract override fun replaceCalleeReference(newCalleeReference: FirReference)
|
||||||
|
|
||||||
|
abstract override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
||||||
|
|
||||||
|
abstract override fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?)
|
||||||
|
|
||||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcast
|
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcast
|
||||||
|
|
||||||
|
abstract override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcast
|
||||||
|
|
||||||
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcast
|
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcast
|
||||||
|
|
||||||
abstract override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcast
|
abstract override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcast
|
||||||
@@ -47,6 +51,4 @@ abstract class FirExpressionWithSmartcast : FirQualifiedAccessExpression() {
|
|||||||
abstract override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcast
|
abstract override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcast
|
||||||
|
|
||||||
abstract override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcast
|
abstract override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcast
|
||||||
|
|
||||||
abstract override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcast
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ abstract class FirFunctionCall : FirQualifiedAccessExpression(), FirCall {
|
|||||||
|
|
||||||
abstract override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
abstract override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
||||||
|
|
||||||
|
abstract override fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?)
|
||||||
|
|
||||||
abstract override fun replaceArgumentList(newArgumentList: FirArgumentList)
|
abstract override fun replaceArgumentList(newArgumentList: FirArgumentList)
|
||||||
|
|
||||||
abstract fun replaceCalleeReference(newCalleeReference: FirNamedReference)
|
abstract fun replaceCalleeReference(newCalleeReference: FirNamedReference)
|
||||||
|
|||||||
@@ -15,30 +15,32 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
* DO NOT MODIFY IT MANUALLY
|
* DO NOT MODIFY IT MANUALLY
|
||||||
*/
|
*/
|
||||||
|
|
||||||
interface FirQualifiedAccess : FirQualifiedAccessWithoutCallee, FirResolvable {
|
interface FirQualifiedAccess : FirResolvable, FirStatement {
|
||||||
override val source: FirSourceElement?
|
override val source: FirSourceElement?
|
||||||
override val annotations: List<FirAnnotationCall>
|
|
||||||
override val typeArguments: List<FirTypeProjection>
|
|
||||||
override val explicitReceiver: FirExpression?
|
|
||||||
override val dispatchReceiver: FirExpression
|
|
||||||
override val extensionReceiver: FirExpression
|
|
||||||
override val calleeReference: FirReference
|
override val calleeReference: FirReference
|
||||||
|
override val annotations: List<FirAnnotationCall>
|
||||||
|
val typeArguments: List<FirTypeProjection>
|
||||||
|
val explicitReceiver: FirExpression?
|
||||||
|
val dispatchReceiver: FirExpression
|
||||||
|
val extensionReceiver: FirExpression
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitQualifiedAccess(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitQualifiedAccess(this, data)
|
||||||
|
|
||||||
override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
|
||||||
|
|
||||||
override fun replaceCalleeReference(newCalleeReference: FirReference)
|
override fun replaceCalleeReference(newCalleeReference: FirReference)
|
||||||
|
|
||||||
|
fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
||||||
|
|
||||||
|
fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?)
|
||||||
|
|
||||||
|
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
|
||||||
|
|
||||||
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
|
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
|
||||||
|
|
||||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
|
fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
|
||||||
|
|
||||||
override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
|
fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
|
||||||
|
|
||||||
override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
|
fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
|
||||||
|
|
||||||
override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
|
fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
|
||||||
|
|
||||||
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
|
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-5
@@ -20,22 +20,26 @@ abstract class FirQualifiedAccessExpression : FirExpression(), FirQualifiedAcces
|
|||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract override val typeRef: FirTypeRef
|
abstract override val typeRef: FirTypeRef
|
||||||
abstract override val annotations: List<FirAnnotationCall>
|
abstract override val annotations: List<FirAnnotationCall>
|
||||||
|
abstract override val calleeReference: FirReference
|
||||||
abstract override val typeArguments: List<FirTypeProjection>
|
abstract override val typeArguments: List<FirTypeProjection>
|
||||||
abstract override val explicitReceiver: FirExpression?
|
abstract override val explicitReceiver: FirExpression?
|
||||||
abstract override val dispatchReceiver: FirExpression
|
abstract override val dispatchReceiver: FirExpression
|
||||||
abstract override val extensionReceiver: FirExpression
|
abstract override val extensionReceiver: FirExpression
|
||||||
abstract override val calleeReference: FirReference
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitQualifiedAccessExpression(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitQualifiedAccessExpression(this, data)
|
||||||
|
|
||||||
abstract override fun replaceTypeRef(newTypeRef: FirTypeRef)
|
abstract override fun replaceTypeRef(newTypeRef: FirTypeRef)
|
||||||
|
|
||||||
abstract override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
|
||||||
|
|
||||||
abstract override fun replaceCalleeReference(newCalleeReference: FirReference)
|
abstract override fun replaceCalleeReference(newCalleeReference: FirReference)
|
||||||
|
|
||||||
|
abstract override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
||||||
|
|
||||||
|
abstract override fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?)
|
||||||
|
|
||||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpression
|
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpression
|
||||||
|
|
||||||
|
abstract override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpression
|
||||||
|
|
||||||
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpression
|
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpression
|
||||||
|
|
||||||
abstract override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpression
|
abstract override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpression
|
||||||
@@ -43,6 +47,4 @@ abstract class FirQualifiedAccessExpression : FirExpression(), FirQualifiedAcces
|
|||||||
abstract override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpression
|
abstract override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpression
|
||||||
|
|
||||||
abstract override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpression
|
abstract override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpression
|
||||||
|
|
||||||
abstract override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpression
|
|
||||||
}
|
}
|
||||||
|
|||||||
-38
@@ -1,38 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2020 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
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file was generated automatically
|
|
||||||
* DO NOT MODIFY IT MANUALLY
|
|
||||||
*/
|
|
||||||
|
|
||||||
interface FirQualifiedAccessWithoutCallee : FirStatement {
|
|
||||||
override val source: FirSourceElement?
|
|
||||||
override val annotations: List<FirAnnotationCall>
|
|
||||||
val typeArguments: List<FirTypeProjection>
|
|
||||||
val explicitReceiver: FirExpression?
|
|
||||||
val dispatchReceiver: FirExpression
|
|
||||||
val extensionReceiver: FirExpression
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitQualifiedAccessWithoutCallee(this, data)
|
|
||||||
|
|
||||||
fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
|
||||||
|
|
||||||
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirQualifiedAccessWithoutCallee
|
|
||||||
|
|
||||||
fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirQualifiedAccessWithoutCallee
|
|
||||||
|
|
||||||
fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccessWithoutCallee
|
|
||||||
|
|
||||||
fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccessWithoutCallee
|
|
||||||
|
|
||||||
fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccessWithoutCallee
|
|
||||||
}
|
|
||||||
+2
@@ -33,6 +33,8 @@ abstract class FirThisReceiverExpression : FirQualifiedAccessExpression() {
|
|||||||
|
|
||||||
abstract override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
abstract override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
||||||
|
|
||||||
|
abstract override fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?)
|
||||||
|
|
||||||
abstract fun replaceCalleeReference(newCalleeReference: FirThisReference)
|
abstract fun replaceCalleeReference(newCalleeReference: FirThisReference)
|
||||||
|
|
||||||
abstract override fun replaceCalleeReference(newCalleeReference: FirReference)
|
abstract override fun replaceCalleeReference(newCalleeReference: FirReference)
|
||||||
|
|||||||
@@ -18,20 +18,24 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
|
|
||||||
abstract class FirVariableAssignment : FirPureAbstractElement(), FirQualifiedAccess {
|
abstract class FirVariableAssignment : FirPureAbstractElement(), FirQualifiedAccess {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
|
abstract override val calleeReference: FirReference
|
||||||
abstract override val annotations: List<FirAnnotationCall>
|
abstract override val annotations: List<FirAnnotationCall>
|
||||||
abstract override val typeArguments: List<FirTypeProjection>
|
abstract override val typeArguments: List<FirTypeProjection>
|
||||||
abstract override val explicitReceiver: FirExpression?
|
abstract override val explicitReceiver: FirExpression?
|
||||||
abstract override val dispatchReceiver: FirExpression
|
abstract override val dispatchReceiver: FirExpression
|
||||||
abstract override val extensionReceiver: FirExpression
|
abstract override val extensionReceiver: FirExpression
|
||||||
abstract override val calleeReference: FirReference
|
|
||||||
abstract val lValue: FirReference
|
abstract val lValue: FirReference
|
||||||
abstract val rValue: FirExpression
|
abstract val rValue: FirExpression
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitVariableAssignment(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitVariableAssignment(this, data)
|
||||||
|
|
||||||
|
abstract override fun replaceCalleeReference(newCalleeReference: FirReference)
|
||||||
|
|
||||||
abstract override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
abstract override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
||||||
|
|
||||||
abstract override fun replaceCalleeReference(newCalleeReference: FirReference)
|
abstract override fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?)
|
||||||
|
|
||||||
|
abstract override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirVariableAssignment
|
||||||
|
|
||||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirVariableAssignment
|
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirVariableAssignment
|
||||||
|
|
||||||
@@ -43,7 +47,5 @@ abstract class FirVariableAssignment : FirPureAbstractElement(), FirQualifiedAcc
|
|||||||
|
|
||||||
abstract override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirVariableAssignment
|
abstract override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirVariableAssignment
|
||||||
|
|
||||||
abstract override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirVariableAssignment
|
|
||||||
|
|
||||||
abstract fun <D> transformRValue(transformer: FirTransformer<D>, data: D): FirVariableAssignment
|
abstract fun <D> transformRValue(transformer: FirTransformer<D>, data: D): FirVariableAssignment
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression
|
|||||||
import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder
|
import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.FirQualifiedAccessBuilder
|
import org.jetbrains.kotlin.fir.expressions.builder.FirQualifiedAccessBuilder
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirCallableReferenceAccessImpl
|
import org.jetbrains.kotlin.fir.expressions.impl.FirCallableReferenceAccessImpl
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
||||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
|
|||||||
-1
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.expressions.builder.FirCallBuilder
|
|||||||
import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder
|
import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.FirQualifiedAccessBuilder
|
import org.jetbrains.kotlin.fir.expressions.builder.FirQualifiedAccessBuilder
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirFunctionCallImpl
|
import org.jetbrains.kotlin.fir.expressions.impl.FirFunctionCallImpl
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
||||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
|
|||||||
+2
-3
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder
|
import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.FirQualifiedAccessBuilder
|
import org.jetbrains.kotlin.fir.expressions.builder.FirQualifiedAccessBuilder
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirQualifiedAccessExpressionImpl
|
import org.jetbrains.kotlin.fir.expressions.impl.FirQualifiedAccessExpressionImpl
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
@@ -33,22 +32,22 @@ class FirQualifiedAccessExpressionBuilder : FirQualifiedAccessBuilder, FirAnnota
|
|||||||
override var source: FirSourceElement? = null
|
override var source: FirSourceElement? = null
|
||||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
|
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
|
||||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||||
|
lateinit var calleeReference: FirReference
|
||||||
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||||
override var explicitReceiver: FirExpression? = null
|
override var explicitReceiver: FirExpression? = null
|
||||||
override var dispatchReceiver: FirExpression = FirNoReceiverExpression
|
override var dispatchReceiver: FirExpression = FirNoReceiverExpression
|
||||||
override var extensionReceiver: FirExpression = FirNoReceiverExpression
|
override var extensionReceiver: FirExpression = FirNoReceiverExpression
|
||||||
lateinit var calleeReference: FirReference
|
|
||||||
|
|
||||||
override fun build(): FirQualifiedAccessExpression {
|
override fun build(): FirQualifiedAccessExpression {
|
||||||
return FirQualifiedAccessExpressionImpl(
|
return FirQualifiedAccessExpressionImpl(
|
||||||
source,
|
source,
|
||||||
typeRef,
|
typeRef,
|
||||||
annotations,
|
annotations,
|
||||||
|
calleeReference,
|
||||||
typeArguments,
|
typeArguments,
|
||||||
explicitReceiver,
|
explicitReceiver,
|
||||||
dispatchReceiver,
|
dispatchReceiver,
|
||||||
extensionReceiver,
|
extensionReceiver,
|
||||||
calleeReference,
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-1
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression
|
import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder
|
import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.FirQualifiedAccessBuilder
|
import org.jetbrains.kotlin.fir.expressions.builder.FirQualifiedAccessBuilder
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirThisReceiverExpressionImpl
|
import org.jetbrains.kotlin.fir.expressions.impl.FirThisReceiverExpressionImpl
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
|
|||||||
+2
-3
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.FirQualifiedAccessBuilder
|
import org.jetbrains.kotlin.fir.expressions.builder.FirQualifiedAccessBuilder
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirVariableAssignmentImpl
|
import org.jetbrains.kotlin.fir.expressions.impl.FirVariableAssignmentImpl
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
@@ -28,23 +27,23 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
@FirBuilderDsl
|
@FirBuilderDsl
|
||||||
class FirVariableAssignmentBuilder : FirQualifiedAccessBuilder, FirAnnotationContainerBuilder {
|
class FirVariableAssignmentBuilder : FirQualifiedAccessBuilder, FirAnnotationContainerBuilder {
|
||||||
override var source: FirSourceElement? = null
|
override var source: FirSourceElement? = null
|
||||||
|
lateinit var calleeReference: FirReference
|
||||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||||
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||||
override var explicitReceiver: FirExpression? = null
|
override var explicitReceiver: FirExpression? = null
|
||||||
override var dispatchReceiver: FirExpression = FirNoReceiverExpression
|
override var dispatchReceiver: FirExpression = FirNoReceiverExpression
|
||||||
override var extensionReceiver: FirExpression = FirNoReceiverExpression
|
override var extensionReceiver: FirExpression = FirNoReceiverExpression
|
||||||
lateinit var calleeReference: FirReference
|
|
||||||
lateinit var rValue: FirExpression
|
lateinit var rValue: FirExpression
|
||||||
|
|
||||||
override fun build(): FirVariableAssignment {
|
override fun build(): FirVariableAssignment {
|
||||||
return FirVariableAssignmentImpl(
|
return FirVariableAssignmentImpl(
|
||||||
source,
|
source,
|
||||||
|
calleeReference,
|
||||||
annotations,
|
annotations,
|
||||||
typeArguments,
|
typeArguments,
|
||||||
explicitReceiver,
|
explicitReceiver,
|
||||||
dispatchReceiver,
|
dispatchReceiver,
|
||||||
extensionReceiver,
|
extensionReceiver,
|
||||||
calleeReference,
|
|
||||||
rValue,
|
rValue,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-2
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.fir.FirSourceElement
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess
|
import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess
|
|
||||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||||
@@ -31,7 +30,7 @@ internal class FirCallableReferenceAccessImpl(
|
|||||||
override var extensionReceiver: FirExpression,
|
override var extensionReceiver: FirExpression,
|
||||||
override var calleeReference: FirNamedReference,
|
override var calleeReference: FirNamedReference,
|
||||||
override var hasQuestionMarkAtLHS: Boolean,
|
override var hasQuestionMarkAtLHS: Boolean,
|
||||||
) : FirCallableReferenceAccess(), FirModifiableQualifiedAccess {
|
) : FirCallableReferenceAccess() {
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
typeRef.accept(visitor, data)
|
typeRef.accept(visitor, data)
|
||||||
annotations.forEach { it.accept(visitor, data) }
|
annotations.forEach { it.accept(visitor, data) }
|
||||||
@@ -100,6 +99,10 @@ internal class FirCallableReferenceAccessImpl(
|
|||||||
typeArguments.addAll(newTypeArguments)
|
typeArguments.addAll(newTypeArguments)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?) {
|
||||||
|
explicitReceiver = newExplicitReceiver
|
||||||
|
}
|
||||||
|
|
||||||
override fun replaceCalleeReference(newCalleeReference: FirNamedReference) {
|
override fun replaceCalleeReference(newCalleeReference: FirNamedReference) {
|
||||||
calleeReference = newCalleeReference
|
calleeReference = newCalleeReference
|
||||||
}
|
}
|
||||||
|
|||||||
+5
@@ -121,4 +121,9 @@ internal class FirComponentCallImpl(
|
|||||||
require(newCalleeReference is FirNamedReference)
|
require(newCalleeReference is FirNamedReference)
|
||||||
replaceCalleeReference(newCalleeReference)
|
replaceCalleeReference(newCalleeReference)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?) {
|
||||||
|
require(newExplicitReceiver != null)
|
||||||
|
explicitReceiver = newExplicitReceiver
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-9
@@ -33,22 +33,17 @@ internal class FirDelegatedConstructorCallImpl(
|
|||||||
override val isSuper: Boolean get() = !isThis
|
override val isSuper: Boolean get() = !isThis
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
calleeReference.accept(visitor, data)
|
|
||||||
annotations.forEach { it.accept(visitor, data) }
|
annotations.forEach { it.accept(visitor, data) }
|
||||||
argumentList.accept(visitor, data)
|
argumentList.accept(visitor, data)
|
||||||
constructedTypeRef.accept(visitor, data)
|
constructedTypeRef.accept(visitor, data)
|
||||||
|
calleeReference.accept(visitor, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirDelegatedConstructorCallImpl {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirDelegatedConstructorCallImpl {
|
||||||
transformCalleeReference(transformer, data)
|
|
||||||
transformAnnotations(transformer, data)
|
transformAnnotations(transformer, data)
|
||||||
argumentList = argumentList.transformSingle(transformer, data)
|
argumentList = argumentList.transformSingle(transformer, data)
|
||||||
constructedTypeRef = constructedTypeRef.transformSingle(transformer, data)
|
constructedTypeRef = constructedTypeRef.transformSingle(transformer, data)
|
||||||
return this
|
transformCalleeReference(transformer, data)
|
||||||
}
|
|
||||||
|
|
||||||
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirDelegatedConstructorCallImpl {
|
|
||||||
calleeReference = calleeReference.transformSingle(transformer, data)
|
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,8 +57,9 @@ internal class FirDelegatedConstructorCallImpl(
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun replaceCalleeReference(newCalleeReference: FirReference) {
|
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirDelegatedConstructorCallImpl {
|
||||||
calleeReference = newCalleeReference
|
calleeReference = calleeReference.transformSingle(transformer, data)
|
||||||
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun replaceArgumentList(newArgumentList: FirArgumentList) {
|
override fun replaceArgumentList(newArgumentList: FirArgumentList) {
|
||||||
@@ -73,4 +69,8 @@ internal class FirDelegatedConstructorCallImpl(
|
|||||||
override fun replaceConstructedTypeRef(newConstructedTypeRef: FirTypeRef) {
|
override fun replaceConstructedTypeRef(newConstructedTypeRef: FirTypeRef) {
|
||||||
constructedTypeRef = newConstructedTypeRef
|
constructedTypeRef = newConstructedTypeRef
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun replaceCalleeReference(newCalleeReference: FirReference) {
|
||||||
|
calleeReference = newCalleeReference
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-2
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirArgumentList
|
import org.jetbrains.kotlin.fir.expressions.FirArgumentList
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess
|
|
||||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||||
@@ -33,7 +32,7 @@ open class FirFunctionCallImpl @FirImplementationDetail constructor(
|
|||||||
override var extensionReceiver: FirExpression,
|
override var extensionReceiver: FirExpression,
|
||||||
override var argumentList: FirArgumentList,
|
override var argumentList: FirArgumentList,
|
||||||
override var calleeReference: FirNamedReference,
|
override var calleeReference: FirNamedReference,
|
||||||
) : FirFunctionCall(), FirModifiableQualifiedAccess {
|
) : FirFunctionCall() {
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
typeRef.accept(visitor, data)
|
typeRef.accept(visitor, data)
|
||||||
annotations.forEach { it.accept(visitor, data) }
|
annotations.forEach { it.accept(visitor, data) }
|
||||||
@@ -104,6 +103,10 @@ open class FirFunctionCallImpl @FirImplementationDetail constructor(
|
|||||||
typeArguments.addAll(newTypeArguments)
|
typeArguments.addAll(newTypeArguments)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?) {
|
||||||
|
explicitReceiver = newExplicitReceiver
|
||||||
|
}
|
||||||
|
|
||||||
override fun replaceArgumentList(newArgumentList: FirArgumentList) {
|
override fun replaceArgumentList(newArgumentList: FirArgumentList) {
|
||||||
argumentList = newArgumentList
|
argumentList = newArgumentList
|
||||||
}
|
}
|
||||||
|
|||||||
-41
@@ -1,41 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2020 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 org.jetbrains.kotlin.fir.FirImplementationDetail
|
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessWithoutCallee
|
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file was generated automatically
|
|
||||||
* DO NOT MODIFY IT MANUALLY
|
|
||||||
*/
|
|
||||||
|
|
||||||
interface FirModifiableQualifiedAccess : FirQualifiedAccessWithoutCallee {
|
|
||||||
override val source: FirSourceElement?
|
|
||||||
override val annotations: MutableList<FirAnnotationCall>
|
|
||||||
override val typeArguments: MutableList<FirTypeProjection>
|
|
||||||
override var explicitReceiver: FirExpression?
|
|
||||||
override var dispatchReceiver: FirExpression
|
|
||||||
override var extensionReceiver: FirExpression
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirModifiableQualifiedAccess
|
|
||||||
|
|
||||||
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirModifiableQualifiedAccess
|
|
||||||
|
|
||||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirModifiableQualifiedAccess
|
|
||||||
|
|
||||||
override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirModifiableQualifiedAccess
|
|
||||||
|
|
||||||
override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirModifiableQualifiedAccess
|
|
||||||
|
|
||||||
override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirModifiableQualifiedAccess
|
|
||||||
|
|
||||||
override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
|
||||||
}
|
|
||||||
+15
-12
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.fir.FirSourceElement
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess
|
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
@@ -24,15 +23,16 @@ internal class FirQualifiedAccessExpressionImpl(
|
|||||||
override val source: FirSourceElement?,
|
override val source: FirSourceElement?,
|
||||||
override var typeRef: FirTypeRef,
|
override var typeRef: FirTypeRef,
|
||||||
override val annotations: MutableList<FirAnnotationCall>,
|
override val annotations: MutableList<FirAnnotationCall>,
|
||||||
|
override var calleeReference: FirReference,
|
||||||
override val typeArguments: MutableList<FirTypeProjection>,
|
override val typeArguments: MutableList<FirTypeProjection>,
|
||||||
override var explicitReceiver: FirExpression?,
|
override var explicitReceiver: FirExpression?,
|
||||||
override var dispatchReceiver: FirExpression,
|
override var dispatchReceiver: FirExpression,
|
||||||
override var extensionReceiver: FirExpression,
|
override var extensionReceiver: FirExpression,
|
||||||
override var calleeReference: FirReference,
|
) : FirQualifiedAccessExpression() {
|
||||||
) : FirQualifiedAccessExpression(), FirModifiableQualifiedAccess {
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
typeRef.accept(visitor, data)
|
typeRef.accept(visitor, data)
|
||||||
annotations.forEach { it.accept(visitor, data) }
|
annotations.forEach { it.accept(visitor, data) }
|
||||||
|
calleeReference.accept(visitor, data)
|
||||||
typeArguments.forEach { it.accept(visitor, data) }
|
typeArguments.forEach { it.accept(visitor, data) }
|
||||||
explicitReceiver?.accept(visitor, data)
|
explicitReceiver?.accept(visitor, data)
|
||||||
if (dispatchReceiver !== explicitReceiver) {
|
if (dispatchReceiver !== explicitReceiver) {
|
||||||
@@ -41,12 +41,12 @@ internal class FirQualifiedAccessExpressionImpl(
|
|||||||
if (extensionReceiver !== explicitReceiver && extensionReceiver !== dispatchReceiver) {
|
if (extensionReceiver !== explicitReceiver && extensionReceiver !== dispatchReceiver) {
|
||||||
extensionReceiver.accept(visitor, data)
|
extensionReceiver.accept(visitor, data)
|
||||||
}
|
}
|
||||||
calleeReference.accept(visitor, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpressionImpl {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpressionImpl {
|
||||||
typeRef = typeRef.transformSingle(transformer, data)
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
transformAnnotations(transformer, data)
|
transformAnnotations(transformer, data)
|
||||||
|
transformCalleeReference(transformer, data)
|
||||||
transformTypeArguments(transformer, data)
|
transformTypeArguments(transformer, data)
|
||||||
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||||
if (dispatchReceiver !== explicitReceiver) {
|
if (dispatchReceiver !== explicitReceiver) {
|
||||||
@@ -55,7 +55,6 @@ internal class FirQualifiedAccessExpressionImpl(
|
|||||||
if (extensionReceiver !== explicitReceiver && extensionReceiver !== dispatchReceiver) {
|
if (extensionReceiver !== explicitReceiver && extensionReceiver !== dispatchReceiver) {
|
||||||
extensionReceiver = extensionReceiver.transformSingle(transformer, data)
|
extensionReceiver = extensionReceiver.transformSingle(transformer, data)
|
||||||
}
|
}
|
||||||
transformCalleeReference(transformer, data)
|
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,6 +63,11 @@ internal class FirQualifiedAccessExpressionImpl(
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpressionImpl {
|
||||||
|
calleeReference = calleeReference.transformSingle(transformer, data)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpressionImpl {
|
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpressionImpl {
|
||||||
typeArguments.transformInplace(transformer, data)
|
typeArguments.transformInplace(transformer, data)
|
||||||
return this
|
return this
|
||||||
@@ -84,21 +88,20 @@ internal class FirQualifiedAccessExpressionImpl(
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpressionImpl {
|
|
||||||
calleeReference = calleeReference.transformSingle(transformer, data)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
||||||
typeRef = newTypeRef
|
typeRef = newTypeRef
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun replaceCalleeReference(newCalleeReference: FirReference) {
|
||||||
|
calleeReference = newCalleeReference
|
||||||
|
}
|
||||||
|
|
||||||
override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) {
|
override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) {
|
||||||
typeArguments.clear()
|
typeArguments.clear()
|
||||||
typeArguments.addAll(newTypeArguments)
|
typeArguments.addAll(newTypeArguments)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun replaceCalleeReference(newCalleeReference: FirReference) {
|
override fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?) {
|
||||||
calleeReference = newCalleeReference
|
explicitReceiver = newExplicitReceiver
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-2
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.fir.FirSourceElement
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression
|
import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||||
@@ -28,7 +27,7 @@ internal class FirThisReceiverExpressionImpl(
|
|||||||
override val annotations: MutableList<FirAnnotationCall>,
|
override val annotations: MutableList<FirAnnotationCall>,
|
||||||
override val typeArguments: MutableList<FirTypeProjection>,
|
override val typeArguments: MutableList<FirTypeProjection>,
|
||||||
override var calleeReference: FirThisReference,
|
override var calleeReference: FirThisReference,
|
||||||
) : FirThisReceiverExpression(), FirModifiableQualifiedAccess {
|
) : FirThisReceiverExpression() {
|
||||||
override var explicitReceiver: FirExpression? = null
|
override var explicitReceiver: FirExpression? = null
|
||||||
override var dispatchReceiver: FirExpression = FirNoReceiverExpression
|
override var dispatchReceiver: FirExpression = FirNoReceiverExpression
|
||||||
override var extensionReceiver: FirExpression = FirNoReceiverExpression
|
override var extensionReceiver: FirExpression = FirNoReceiverExpression
|
||||||
@@ -101,6 +100,10 @@ internal class FirThisReceiverExpressionImpl(
|
|||||||
typeArguments.addAll(newTypeArguments)
|
typeArguments.addAll(newTypeArguments)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?) {
|
||||||
|
explicitReceiver = newExplicitReceiver
|
||||||
|
}
|
||||||
|
|
||||||
override fun replaceCalleeReference(newCalleeReference: FirThisReference) {
|
override fun replaceCalleeReference(newCalleeReference: FirThisReference) {
|
||||||
calleeReference = newCalleeReference
|
calleeReference = newCalleeReference
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-12
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.fir.FirSourceElement
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess
|
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
@@ -21,14 +20,14 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
|
|
||||||
internal class FirVariableAssignmentImpl(
|
internal class FirVariableAssignmentImpl(
|
||||||
override val source: FirSourceElement?,
|
override val source: FirSourceElement?,
|
||||||
|
override var calleeReference: FirReference,
|
||||||
override val annotations: MutableList<FirAnnotationCall>,
|
override val annotations: MutableList<FirAnnotationCall>,
|
||||||
override val typeArguments: MutableList<FirTypeProjection>,
|
override val typeArguments: MutableList<FirTypeProjection>,
|
||||||
override var explicitReceiver: FirExpression?,
|
override var explicitReceiver: FirExpression?,
|
||||||
override var dispatchReceiver: FirExpression,
|
override var dispatchReceiver: FirExpression,
|
||||||
override var extensionReceiver: FirExpression,
|
override var extensionReceiver: FirExpression,
|
||||||
override var calleeReference: FirReference,
|
|
||||||
override var rValue: FirExpression,
|
override var rValue: FirExpression,
|
||||||
) : FirVariableAssignment(), FirModifiableQualifiedAccess {
|
) : FirVariableAssignment() {
|
||||||
override var lValue: FirReference
|
override var lValue: FirReference
|
||||||
get() = calleeReference
|
get() = calleeReference
|
||||||
set(value) {
|
set(value) {
|
||||||
@@ -36,6 +35,7 @@ internal class FirVariableAssignmentImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
|
calleeReference.accept(visitor, data)
|
||||||
annotations.forEach { it.accept(visitor, data) }
|
annotations.forEach { it.accept(visitor, data) }
|
||||||
typeArguments.forEach { it.accept(visitor, data) }
|
typeArguments.forEach { it.accept(visitor, data) }
|
||||||
explicitReceiver?.accept(visitor, data)
|
explicitReceiver?.accept(visitor, data)
|
||||||
@@ -45,11 +45,11 @@ internal class FirVariableAssignmentImpl(
|
|||||||
if (extensionReceiver !== explicitReceiver && extensionReceiver !== dispatchReceiver) {
|
if (extensionReceiver !== explicitReceiver && extensionReceiver !== dispatchReceiver) {
|
||||||
extensionReceiver.accept(visitor, data)
|
extensionReceiver.accept(visitor, data)
|
||||||
}
|
}
|
||||||
calleeReference.accept(visitor, data)
|
|
||||||
rValue.accept(visitor, data)
|
rValue.accept(visitor, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirVariableAssignmentImpl {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirVariableAssignmentImpl {
|
||||||
|
transformCalleeReference(transformer, data)
|
||||||
transformAnnotations(transformer, data)
|
transformAnnotations(transformer, data)
|
||||||
transformTypeArguments(transformer, data)
|
transformTypeArguments(transformer, data)
|
||||||
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||||
@@ -59,11 +59,15 @@ internal class FirVariableAssignmentImpl(
|
|||||||
if (extensionReceiver !== explicitReceiver && extensionReceiver !== dispatchReceiver) {
|
if (extensionReceiver !== explicitReceiver && extensionReceiver !== dispatchReceiver) {
|
||||||
extensionReceiver = extensionReceiver.transformSingle(transformer, data)
|
extensionReceiver = extensionReceiver.transformSingle(transformer, data)
|
||||||
}
|
}
|
||||||
transformCalleeReference(transformer, data)
|
|
||||||
transformRValue(transformer, data)
|
transformRValue(transformer, data)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirVariableAssignmentImpl {
|
||||||
|
calleeReference = calleeReference.transformSingle(transformer, data)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirVariableAssignmentImpl {
|
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirVariableAssignmentImpl {
|
||||||
annotations.transformInplace(transformer, data)
|
annotations.transformInplace(transformer, data)
|
||||||
return this
|
return this
|
||||||
@@ -89,22 +93,21 @@ internal class FirVariableAssignmentImpl(
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirVariableAssignmentImpl {
|
|
||||||
calleeReference = calleeReference.transformSingle(transformer, data)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun <D> transformRValue(transformer: FirTransformer<D>, data: D): FirVariableAssignmentImpl {
|
override fun <D> transformRValue(transformer: FirTransformer<D>, data: D): FirVariableAssignmentImpl {
|
||||||
rValue = rValue.transformSingle(transformer, data)
|
rValue = rValue.transformSingle(transformer, data)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun replaceCalleeReference(newCalleeReference: FirReference) {
|
||||||
|
calleeReference = newCalleeReference
|
||||||
|
}
|
||||||
|
|
||||||
override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) {
|
override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) {
|
||||||
typeArguments.clear()
|
typeArguments.clear()
|
||||||
typeArguments.addAll(newTypeArguments)
|
typeArguments.addAll(newTypeArguments)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun replaceCalleeReference(newCalleeReference: FirReference) {
|
override fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?) {
|
||||||
calleeReference = newCalleeReference
|
explicitReceiver = newExplicitReceiver
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,7 +74,6 @@ import org.jetbrains.kotlin.fir.expressions.FirAssignmentOperatorStatement
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirEqualityOperatorCall
|
import org.jetbrains.kotlin.fir.expressions.FirEqualityOperatorCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirWhenExpression
|
import org.jetbrains.kotlin.fir.expressions.FirWhenExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirWhenBranch
|
import org.jetbrains.kotlin.fir.expressions.FirWhenBranch
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessWithoutCallee
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirCheckNotNullCall
|
import org.jetbrains.kotlin.fir.expressions.FirCheckNotNullCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirElvisExpression
|
import org.jetbrains.kotlin.fir.expressions.FirElvisExpression
|
||||||
@@ -414,10 +413,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformElement(whenBranch, data)
|
return transformElement(whenBranch, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformQualifiedAccessWithoutCallee(qualifiedAccessWithoutCallee: FirQualifiedAccessWithoutCallee, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformElement(qualifiedAccessWithoutCallee, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformQualifiedAccess(qualifiedAccess: FirQualifiedAccess, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformQualifiedAccess(qualifiedAccess: FirQualifiedAccess, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformElement(qualifiedAccess, data)
|
return transformElement(qualifiedAccess, data)
|
||||||
}
|
}
|
||||||
@@ -918,10 +913,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformWhenBranch(whenBranch, data)
|
return transformWhenBranch(whenBranch, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitQualifiedAccessWithoutCallee(qualifiedAccessWithoutCallee: FirQualifiedAccessWithoutCallee, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformQualifiedAccessWithoutCallee(qualifiedAccessWithoutCallee, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitQualifiedAccess(qualifiedAccess: FirQualifiedAccess, data: D): CompositeTransformResult<FirStatement> {
|
final override fun visitQualifiedAccess(qualifiedAccess: FirQualifiedAccess, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformQualifiedAccess(qualifiedAccess, data)
|
return transformQualifiedAccess(qualifiedAccess, data)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,7 +74,6 @@ import org.jetbrains.kotlin.fir.expressions.FirAssignmentOperatorStatement
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirEqualityOperatorCall
|
import org.jetbrains.kotlin.fir.expressions.FirEqualityOperatorCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirWhenExpression
|
import org.jetbrains.kotlin.fir.expressions.FirWhenExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirWhenBranch
|
import org.jetbrains.kotlin.fir.expressions.FirWhenBranch
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessWithoutCallee
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirCheckNotNullCall
|
import org.jetbrains.kotlin.fir.expressions.FirCheckNotNullCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirElvisExpression
|
import org.jetbrains.kotlin.fir.expressions.FirElvisExpression
|
||||||
@@ -276,8 +275,6 @@ abstract class FirVisitor<out R, in D> {
|
|||||||
|
|
||||||
open fun visitWhenBranch(whenBranch: FirWhenBranch, data: D): R = visitElement(whenBranch, data)
|
open fun visitWhenBranch(whenBranch: FirWhenBranch, data: D): R = visitElement(whenBranch, data)
|
||||||
|
|
||||||
open fun visitQualifiedAccessWithoutCallee(qualifiedAccessWithoutCallee: FirQualifiedAccessWithoutCallee, data: D): R = visitElement(qualifiedAccessWithoutCallee, data)
|
|
||||||
|
|
||||||
open fun visitQualifiedAccess(qualifiedAccess: FirQualifiedAccess, data: D): R = visitElement(qualifiedAccess, data)
|
open fun visitQualifiedAccess(qualifiedAccess: FirQualifiedAccess, data: D): R = visitElement(qualifiedAccess, data)
|
||||||
|
|
||||||
open fun visitCheckNotNullCall(checkNotNullCall: FirCheckNotNullCall, data: D): R = visitElement(checkNotNullCall, data)
|
open fun visitCheckNotNullCall(checkNotNullCall: FirCheckNotNullCall, data: D): R = visitElement(checkNotNullCall, data)
|
||||||
|
|||||||
@@ -74,7 +74,6 @@ import org.jetbrains.kotlin.fir.expressions.FirAssignmentOperatorStatement
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirEqualityOperatorCall
|
import org.jetbrains.kotlin.fir.expressions.FirEqualityOperatorCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirWhenExpression
|
import org.jetbrains.kotlin.fir.expressions.FirWhenExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirWhenBranch
|
import org.jetbrains.kotlin.fir.expressions.FirWhenBranch
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessWithoutCallee
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirCheckNotNullCall
|
import org.jetbrains.kotlin.fir.expressions.FirCheckNotNullCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirElvisExpression
|
import org.jetbrains.kotlin.fir.expressions.FirElvisExpression
|
||||||
@@ -412,10 +411,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitElement(whenBranch)
|
visitElement(whenBranch)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitQualifiedAccessWithoutCallee(qualifiedAccessWithoutCallee: FirQualifiedAccessWithoutCallee) {
|
|
||||||
visitElement(qualifiedAccessWithoutCallee)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitQualifiedAccess(qualifiedAccess: FirQualifiedAccess) {
|
open fun visitQualifiedAccess(qualifiedAccess: FirQualifiedAccess) {
|
||||||
visitElement(qualifiedAccess)
|
visitElement(qualifiedAccess)
|
||||||
}
|
}
|
||||||
@@ -916,10 +911,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitWhenBranch(whenBranch)
|
visitWhenBranch(whenBranch)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitQualifiedAccessWithoutCallee(qualifiedAccessWithoutCallee: FirQualifiedAccessWithoutCallee, data: Nothing?) {
|
|
||||||
visitQualifiedAccessWithoutCallee(qualifiedAccessWithoutCallee)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitQualifiedAccess(qualifiedAccess: FirQualifiedAccess, data: Nothing?) {
|
final override fun visitQualifiedAccess(qualifiedAccess: FirQualifiedAccess, data: Nothing?) {
|
||||||
visitQualifiedAccess(qualifiedAccess)
|
visitQualifiedAccess(qualifiedAccess)
|
||||||
}
|
}
|
||||||
|
|||||||
+4
@@ -78,5 +78,9 @@ internal class FirExpressionWithSmartcastImpl(
|
|||||||
throw IllegalStateException()
|
throw IllegalStateException()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?) {
|
||||||
|
throw IllegalStateException()
|
||||||
|
}
|
||||||
|
|
||||||
override fun replaceTypeRef(newTypeRef: FirTypeRef) {}
|
override fun replaceTypeRef(newTypeRef: FirTypeRef) {}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -24,7 +24,7 @@ object FieldSets {
|
|||||||
val calleeReference = field("calleeReference", reference, withReplace = true)
|
val calleeReference = field("calleeReference", reference, withReplace = true)
|
||||||
|
|
||||||
val receivers = fieldSet(
|
val receivers = fieldSet(
|
||||||
field("explicitReceiver", expression, nullable = true).withTransform(),
|
field("explicitReceiver", expression, nullable = true, withReplace = true).withTransform(),
|
||||||
field("dispatchReceiver", expression).withTransform(),
|
field("dispatchReceiver", expression).withTransform(),
|
||||||
field("extensionReceiver", expression).withTransform()
|
field("extensionReceiver", expression).withTransform()
|
||||||
)
|
)
|
||||||
@@ -83,4 +83,4 @@ object FieldSets {
|
|||||||
val modality = field(modalityType, nullable = true)
|
val modality = field(modalityType, nullable = true)
|
||||||
|
|
||||||
val scopeProvider = field("scopeProvider", firScopeProviderType)
|
val scopeProvider = field("scopeProvider", firScopeProviderType)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -90,8 +90,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
|||||||
val equalityOperatorCall = element("EqualityOperatorCall", Expression, expression, call)
|
val equalityOperatorCall = element("EqualityOperatorCall", Expression, expression, call)
|
||||||
val whenExpression = element("WhenExpression", Expression, expression, resolvable)
|
val whenExpression = element("WhenExpression", Expression, expression, resolvable)
|
||||||
val whenBranch = element("WhenBranch", Expression)
|
val whenBranch = element("WhenBranch", Expression)
|
||||||
val qualifiedAccessWithoutCallee = element("QualifiedAccessWithoutCallee", Expression, statement)
|
val qualifiedAccess = element("QualifiedAccess", Expression, resolvable, statement)
|
||||||
val qualifiedAccess = element("QualifiedAccess", Expression, qualifiedAccessWithoutCallee, resolvable)
|
|
||||||
val checkNotNullCall = element("CheckNotNullCall", Expression, expression, call, resolvable)
|
val checkNotNullCall = element("CheckNotNullCall", Expression, expression, call, resolvable)
|
||||||
val elvisExpression = element("ElvisExpression", Expression, expression, resolvable)
|
val elvisExpression = element("ElvisExpression", Expression, expression, resolvable)
|
||||||
|
|
||||||
|
|||||||
+2
-13
@@ -74,11 +74,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
|||||||
|
|
||||||
impl(arrayOfCall)
|
impl(arrayOfCall)
|
||||||
|
|
||||||
val modifiableQualifiedAccess = impl(qualifiedAccessWithoutCallee, "FirModifiableQualifiedAccess") {}
|
impl(callableReferenceAccess)
|
||||||
|
|
||||||
impl(callableReferenceAccess) {
|
|
||||||
parents += modifiableQualifiedAccess
|
|
||||||
}
|
|
||||||
|
|
||||||
impl(componentCall) {
|
impl(componentCall) {
|
||||||
default("calleeReference", "FirSimpleNamedReference(source, Name.identifier(\"component\$componentIndex\"), null)")
|
default("calleeReference", "FirSimpleNamedReference(source, Name.identifier(\"component\$componentIndex\"), null)")
|
||||||
@@ -128,14 +124,10 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl(functionCall) {
|
impl(functionCall) {
|
||||||
parents += modifiableQualifiedAccess
|
|
||||||
kind = OpenClass
|
kind = OpenClass
|
||||||
}
|
}
|
||||||
|
|
||||||
impl(qualifiedAccessExpression) {
|
impl(qualifiedAccessExpression)
|
||||||
parents += modifiableQualifiedAccess
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
noImpl(expressionWithSmartcast)
|
noImpl(expressionWithSmartcast)
|
||||||
|
|
||||||
@@ -269,7 +261,6 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl(thisReceiverExpression) {
|
impl(thisReceiverExpression) {
|
||||||
parents += modifiableQualifiedAccess
|
|
||||||
defaultNoReceivers()
|
defaultNoReceivers()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -280,8 +271,6 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl(variableAssignment) {
|
impl(variableAssignment) {
|
||||||
parents += modifiableQualifiedAccess
|
|
||||||
|
|
||||||
default("lValue") {
|
default("lValue") {
|
||||||
value = "calleeReference"
|
value = "calleeReference"
|
||||||
customSetter = "calleeReference = value"
|
customSetter = "calleeReference = value"
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.fir.tree.generator.FieldSets.calleeReference
|
|||||||
import org.jetbrains.kotlin.fir.tree.generator.FieldSets.classKind
|
import org.jetbrains.kotlin.fir.tree.generator.FieldSets.classKind
|
||||||
import org.jetbrains.kotlin.fir.tree.generator.FieldSets.controlFlowGraphReferenceField
|
import org.jetbrains.kotlin.fir.tree.generator.FieldSets.controlFlowGraphReferenceField
|
||||||
import org.jetbrains.kotlin.fir.tree.generator.FieldSets.declarations
|
import org.jetbrains.kotlin.fir.tree.generator.FieldSets.declarations
|
||||||
import org.jetbrains.kotlin.fir.tree.generator.FieldSets.effectiveVisibility
|
|
||||||
import org.jetbrains.kotlin.fir.tree.generator.FieldSets.initializer
|
import org.jetbrains.kotlin.fir.tree.generator.FieldSets.initializer
|
||||||
import org.jetbrains.kotlin.fir.tree.generator.FieldSets.modality
|
import org.jetbrains.kotlin.fir.tree.generator.FieldSets.modality
|
||||||
import org.jetbrains.kotlin.fir.tree.generator.FieldSets.name
|
import org.jetbrains.kotlin.fir.tree.generator.FieldSets.name
|
||||||
@@ -192,7 +191,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
+field("rhs", expression).withTransform()
|
+field("rhs", expression).withTransform()
|
||||||
}
|
}
|
||||||
|
|
||||||
qualifiedAccessWithoutCallee.configure {
|
qualifiedAccess.configure {
|
||||||
+typeArguments.withTransform()
|
+typeArguments.withTransform()
|
||||||
+receivers
|
+receivers
|
||||||
}
|
}
|
||||||
@@ -354,6 +353,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
delegatedConstructorCall.configure {
|
delegatedConstructorCall.configure {
|
||||||
+field("constructedTypeRef", typeRef, withReplace = true)
|
+field("constructedTypeRef", typeRef, withReplace = true)
|
||||||
+field("dispatchReceiver", expression).withTransform()
|
+field("dispatchReceiver", expression).withTransform()
|
||||||
|
+field("calleeReference", reference, withReplace = true)
|
||||||
generateBooleanFields("this", "super")
|
generateBooleanFields("this", "super")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-1
@@ -33,6 +33,7 @@ interface AbstractElement : FieldContainer, KindOwner {
|
|||||||
val defaultImplementation: Implementation?
|
val defaultImplementation: Implementation?
|
||||||
val customImplementations: List<Implementation>
|
val customImplementations: List<Implementation>
|
||||||
val overridenFields: Map<Field, Map<Importable, Boolean>>
|
val overridenFields: Map<Field, Map<Importable, Boolean>>
|
||||||
|
val useNullableForReplace: Set<Field>
|
||||||
|
|
||||||
override val allParents: List<KindOwner> get() = parents
|
override val allParents: List<KindOwner> get() = parents
|
||||||
}
|
}
|
||||||
@@ -63,6 +64,7 @@ class Element(val name: String, kind: Kind) : AbstractElement {
|
|||||||
|
|
||||||
override val needTransformOtherChildren: Boolean get() = _needTransformOtherChildren || parents.any { it.needTransformOtherChildren }
|
override val needTransformOtherChildren: Boolean get() = _needTransformOtherChildren || parents.any { it.needTransformOtherChildren }
|
||||||
override val overridenFields: MutableMap<Field, MutableMap<Importable, Boolean>> = mutableMapOf()
|
override val overridenFields: MutableMap<Field, MutableMap<Importable, Boolean>> = mutableMapOf()
|
||||||
|
override val useNullableForReplace: MutableSet<Field> = mutableSetOf()
|
||||||
override val allImplementations: List<Implementation> by lazy {
|
override val allImplementations: List<Implementation> by lazy {
|
||||||
if (doesNotNeedImplementation) {
|
if (doesNotNeedImplementation) {
|
||||||
emptyList()
|
emptyList()
|
||||||
@@ -90,6 +92,9 @@ class Element(val name: String, kind: Kind) : AbstractElement {
|
|||||||
overridenFields[existingField, parentField] = false
|
overridenFields[existingField, parentField] = false
|
||||||
} else {
|
} else {
|
||||||
overridenFields[existingField, parentField] = true
|
overridenFields[existingField, parentField] = true
|
||||||
|
if (parentField.nullable != existingField.nullable) {
|
||||||
|
existingField.useNullableForReplace = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
overridenFields[parentField, parentField] = true
|
overridenFields[parentField, parentField] = true
|
||||||
@@ -174,4 +179,4 @@ class TypeArgumentWithMultipleUpperBounds(name: String, override val upperBounds
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data class ArbitraryImportable(override val packageName: String, override val type: String) : Importable
|
data class ArbitraryImportable(override val packageName: String, override val type: String) : Importable
|
||||||
|
|||||||
+6
@@ -26,6 +26,7 @@ sealed class Field : Importable {
|
|||||||
open val fromDelegate: Boolean get() = false
|
open val fromDelegate: Boolean get() = false
|
||||||
|
|
||||||
open val overridenTypes: MutableSet<Importable> = mutableSetOf()
|
open val overridenTypes: MutableSet<Importable> = mutableSetOf()
|
||||||
|
open var useNullableForReplace: Boolean = false
|
||||||
|
|
||||||
fun copy(): Field = internalCopy().also {
|
fun copy(): Field = internalCopy().also {
|
||||||
updateFieldsInCopy(it)
|
updateFieldsInCopy(it)
|
||||||
@@ -39,6 +40,7 @@ sealed class Field : Importable {
|
|||||||
copy.needTransformInOtherChildren = needTransformInOtherChildren
|
copy.needTransformInOtherChildren = needTransformInOtherChildren
|
||||||
copy.isMutable = isMutable
|
copy.isMutable = isMutable
|
||||||
copy.overridenTypes += overridenTypes
|
copy.overridenTypes += overridenTypes
|
||||||
|
copy.useNullableForReplace = useNullableForReplace
|
||||||
}
|
}
|
||||||
copy.fromParent = fromParent
|
copy.fromParent = fromParent
|
||||||
}
|
}
|
||||||
@@ -98,6 +100,10 @@ class FieldWithDefault(val origin: Field) : Field() {
|
|||||||
override val overridenTypes: MutableSet<Importable>
|
override val overridenTypes: MutableSet<Importable>
|
||||||
get() = origin.overridenTypes
|
get() = origin.overridenTypes
|
||||||
|
|
||||||
|
override var useNullableForReplace: Boolean
|
||||||
|
get() = origin.useNullableForReplace
|
||||||
|
set(_) {}
|
||||||
|
|
||||||
override fun internalCopy(): Field {
|
override fun internalCopy(): Field {
|
||||||
return FieldWithDefault(origin).also {
|
return FieldWithDefault(origin).also {
|
||||||
it.defaultValueInImplementation = defaultValueInImplementation
|
it.defaultValueInImplementation = defaultValueInImplementation
|
||||||
|
|||||||
+3
-3
@@ -84,15 +84,15 @@ fun SmartPrinter.printElement(element: Element) {
|
|||||||
override()
|
override()
|
||||||
println("fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visit$name(this, data)")
|
println("fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visit$name(this, data)")
|
||||||
|
|
||||||
fun Field.replaceDeclaration(override: Boolean, overridenType: Importable? = null) {
|
fun Field.replaceDeclaration(override: Boolean, overridenType: Importable? = null, forceNullable: Boolean = false) {
|
||||||
println()
|
println()
|
||||||
abstract()
|
abstract()
|
||||||
if (override) print("override ")
|
if (override) print("override ")
|
||||||
println(replaceFunctionDeclaration(overridenType))
|
println(replaceFunctionDeclaration(overridenType, forceNullable))
|
||||||
}
|
}
|
||||||
|
|
||||||
allFields.filter { it.withReplace }.forEach {
|
allFields.filter { it.withReplace }.forEach {
|
||||||
it.replaceDeclaration(overridenFields[it, it])
|
it.replaceDeclaration(overridenFields[it, it], forceNullable = it.useNullableForReplace)
|
||||||
for (overridenType in it.overridenTypes) {
|
for (overridenType in it.overridenTypes) {
|
||||||
it.replaceDeclaration(true, overridenType)
|
it.replaceDeclaration(true, overridenType)
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-3
@@ -303,10 +303,15 @@ fun SmartPrinter.printImplementation(implementation: Implementation) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun generateReplace(field: Field, overridenType: Importable? = null, body: () -> Unit) {
|
fun generateReplace(
|
||||||
|
field: Field,
|
||||||
|
overridenType: Importable? = null,
|
||||||
|
forceNullable: Boolean = false,
|
||||||
|
body: () -> Unit,
|
||||||
|
) {
|
||||||
println()
|
println()
|
||||||
abstract()
|
abstract()
|
||||||
print("override ${field.replaceFunctionDeclaration(overridenType)}")
|
print("override ${field.replaceFunctionDeclaration(overridenType, forceNullable)}")
|
||||||
if (isInterface || isAbstract) {
|
if (isInterface || isAbstract) {
|
||||||
println()
|
println()
|
||||||
return
|
return
|
||||||
@@ -326,7 +331,7 @@ fun SmartPrinter.printImplementation(implementation: Implementation) {
|
|||||||
for (field in allFields.filter { it.withReplace }) {
|
for (field in allFields.filter { it.withReplace }) {
|
||||||
val capitalizedFieldName = field.name.capitalize()
|
val capitalizedFieldName = field.name.capitalize()
|
||||||
val newValue = "new$capitalizedFieldName"
|
val newValue = "new$capitalizedFieldName"
|
||||||
generateReplace(field) {
|
generateReplace(field, forceNullable = field.useNullableForReplace) {
|
||||||
when {
|
when {
|
||||||
field.withGetter -> {}
|
field.withGetter -> {}
|
||||||
|
|
||||||
@@ -336,6 +341,9 @@ fun SmartPrinter.printImplementation(implementation: Implementation) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
|
if (field.useNullableForReplace) {
|
||||||
|
println("require($newValue != null)")
|
||||||
|
}
|
||||||
println("${field.name} = $newValue")
|
println("${field.name} = $newValue")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-2
@@ -96,10 +96,13 @@ fun transformFunctionDeclaration(transformName: String, returnType: String): Str
|
|||||||
return "fun <D> transform$transformName(transformer: FirTransformer<D>, data: D): $returnType"
|
return "fun <D> transform$transformName(transformer: FirTransformer<D>, data: D): $returnType"
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Field.replaceFunctionDeclaration(overridenType: Importable? = null): String {
|
fun Field.replaceFunctionDeclaration(overridenType: Importable? = null, forceNullable: Boolean = false): String {
|
||||||
val capName = name.capitalize()
|
val capName = name.capitalize()
|
||||||
val type = overridenType?.typeWithArguments ?: typeWithArguments
|
val type = overridenType?.typeWithArguments ?: typeWithArguments
|
||||||
return "fun replace$capName(new$capName: $type)"
|
|
||||||
|
val typeWithNullable = if (forceNullable && !type.endsWith("?")) "$type?" else type
|
||||||
|
|
||||||
|
return "fun replace$capName(new$capName: $typeWithNullable)"
|
||||||
}
|
}
|
||||||
|
|
||||||
val Field.mutableType: String
|
val Field.mutableType: String
|
||||||
|
|||||||
Reference in New Issue
Block a user