[FIR] Add type parameters to FirQualifierExpression
It is needed for resolving qualifiers with type arguments like `Array<String>::class`
This commit is contained in:
@@ -170,6 +170,14 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun List<FirTypeProjection>.renderTypeArguments() {
|
||||
if (isNotEmpty()) {
|
||||
print("<")
|
||||
renderSeparated()
|
||||
print(">")
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration) {
|
||||
memberDeclaration.annotations.renderAnnotations()
|
||||
if (memberDeclaration !is FirProperty || !memberDeclaration.isLocal) {
|
||||
@@ -926,6 +934,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
qualifiedAccessExpression.annotations.renderAnnotations()
|
||||
visitQualifiedAccess(qualifiedAccessExpression)
|
||||
qualifiedAccessExpression.calleeReference.accept(this)
|
||||
qualifiedAccessExpression.typeArguments.renderTypeArguments()
|
||||
}
|
||||
|
||||
override fun visitThisReceiverExpression(thisReceiverExpression: FirThisReceiverExpression) {
|
||||
@@ -964,11 +973,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
functionCall.annotations.renderAnnotations()
|
||||
visitQualifiedAccess(functionCall)
|
||||
functionCall.calleeReference.accept(this)
|
||||
if (functionCall.typeArguments.isNotEmpty()) {
|
||||
print("<")
|
||||
functionCall.typeArguments.renderSeparated()
|
||||
print(">")
|
||||
}
|
||||
functionCall.typeArguments.renderTypeArguments()
|
||||
visitCall(functionCall)
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.expressions
|
||||
import org.jetbrains.kotlin.fir.FirPureAbstractElement
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.references.FirReference
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
@@ -19,6 +20,7 @@ abstract class FirArraySetCall : FirPureAbstractElement(), FirQualifiedAccess, F
|
||||
abstract override val source: FirSourceElement?
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val safe: Boolean
|
||||
abstract override val typeArguments: List<FirTypeProjection>
|
||||
abstract override val explicitReceiver: FirExpression?
|
||||
abstract override val dispatchReceiver: FirExpression
|
||||
abstract override val extensionReceiver: FirExpression
|
||||
@@ -31,6 +33,8 @@ abstract class FirArraySetCall : FirPureAbstractElement(), FirQualifiedAccess, F
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitArraySetCall(this, data)
|
||||
|
||||
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirArraySetCall
|
||||
|
||||
abstract override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirArraySetCall
|
||||
|
||||
abstract override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirArraySetCall
|
||||
|
||||
+4
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
@@ -20,6 +21,7 @@ abstract class FirCallableReferenceAccess : FirQualifiedAccessExpression() {
|
||||
abstract override val typeRef: FirTypeRef
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val safe: Boolean
|
||||
abstract override val typeArguments: List<FirTypeProjection>
|
||||
abstract override val explicitReceiver: FirExpression?
|
||||
abstract override val dispatchReceiver: FirExpression
|
||||
abstract override val extensionReceiver: FirExpression
|
||||
@@ -27,6 +29,8 @@ abstract class FirCallableReferenceAccess : FirQualifiedAccessExpression() {
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitCallableReferenceAccess(this, data)
|
||||
|
||||
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirCallableReferenceAccess
|
||||
|
||||
abstract override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirCallableReferenceAccess
|
||||
|
||||
abstract override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirCallableReferenceAccess
|
||||
|
||||
@@ -21,24 +21,24 @@ abstract class FirComponentCall : FirFunctionCall() {
|
||||
abstract override val typeRef: FirTypeRef
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val safe: Boolean
|
||||
abstract override val typeArguments: List<FirTypeProjection>
|
||||
abstract override val dispatchReceiver: FirExpression
|
||||
abstract override val extensionReceiver: FirExpression
|
||||
abstract override val arguments: List<FirExpression>
|
||||
abstract override val typeArguments: List<FirTypeProjection>
|
||||
abstract override val calleeReference: FirNamedReference
|
||||
abstract override val explicitReceiver: FirExpression
|
||||
abstract val componentIndex: Int
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitComponentCall(this, data)
|
||||
|
||||
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirComponentCall
|
||||
|
||||
abstract override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirComponentCall
|
||||
|
||||
abstract override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirComponentCall
|
||||
|
||||
abstract override fun <D> transformArguments(transformer: FirTransformer<D>, data: D): FirComponentCall
|
||||
|
||||
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirComponentCall
|
||||
|
||||
abstract override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirComponentCall
|
||||
|
||||
abstract override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirComponentCall
|
||||
|
||||
+4
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.expressions
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.references.FirReference
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
@@ -21,6 +22,7 @@ abstract class FirExpressionWithSmartcast : FirQualifiedAccessExpression() {
|
||||
abstract override val typeRef: FirTypeRef
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val safe: Boolean
|
||||
abstract override val typeArguments: List<FirTypeProjection>
|
||||
abstract override val explicitReceiver: FirExpression?
|
||||
abstract override val dispatchReceiver: FirExpression
|
||||
abstract override val extensionReceiver: FirExpression
|
||||
@@ -31,6 +33,8 @@ abstract class FirExpressionWithSmartcast : FirQualifiedAccessExpression() {
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitExpressionWithSmartcast(this, data)
|
||||
|
||||
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> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcast
|
||||
|
||||
@@ -21,15 +21,17 @@ abstract class FirFunctionCall : FirQualifiedAccessExpression(), FirCall {
|
||||
abstract override val typeRef: FirTypeRef
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val safe: Boolean
|
||||
abstract override val typeArguments: List<FirTypeProjection>
|
||||
abstract override val explicitReceiver: FirExpression?
|
||||
abstract override val dispatchReceiver: FirExpression
|
||||
abstract override val extensionReceiver: FirExpression
|
||||
abstract override val arguments: List<FirExpression>
|
||||
abstract val typeArguments: List<FirTypeProjection>
|
||||
abstract override val calleeReference: FirNamedReference
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitFunctionCall(this, data)
|
||||
|
||||
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirFunctionCall
|
||||
|
||||
abstract override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirFunctionCall
|
||||
|
||||
abstract override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirFunctionCall
|
||||
@@ -38,7 +40,5 @@ abstract class FirFunctionCall : FirQualifiedAccessExpression(), FirCall {
|
||||
|
||||
abstract override fun <D> transformArguments(transformer: FirTransformer<D>, data: D): FirFunctionCall
|
||||
|
||||
abstract fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirFunctionCall
|
||||
|
||||
abstract override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirFunctionCall
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.references.FirReference
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
@@ -18,6 +19,7 @@ interface FirQualifiedAccess : FirQualifiedAccessWithoutCallee, FirResolvable {
|
||||
override val source: FirSourceElement?
|
||||
override val annotations: List<FirAnnotationCall>
|
||||
override val safe: Boolean
|
||||
override val typeArguments: List<FirTypeProjection>
|
||||
override val explicitReceiver: FirExpression?
|
||||
override val dispatchReceiver: FirExpression
|
||||
override val extensionReceiver: FirExpression
|
||||
@@ -25,6 +27,8 @@ interface FirQualifiedAccess : FirQualifiedAccessWithoutCallee, FirResolvable {
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitQualifiedAccess(this, data)
|
||||
|
||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
|
||||
|
||||
override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
|
||||
|
||||
override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess
|
||||
|
||||
+4
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.expressions
|
||||
import org.jetbrains.kotlin.fir.FirPureAbstractElement
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.references.FirReference
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
@@ -21,6 +22,7 @@ abstract class FirQualifiedAccessExpression : FirPureAbstractElement(), FirExpre
|
||||
abstract override val typeRef: FirTypeRef
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val safe: Boolean
|
||||
abstract override val typeArguments: List<FirTypeProjection>
|
||||
abstract override val explicitReceiver: FirExpression?
|
||||
abstract override val dispatchReceiver: FirExpression
|
||||
abstract override val extensionReceiver: FirExpression
|
||||
@@ -28,6 +30,8 @@ abstract class FirQualifiedAccessExpression : FirPureAbstractElement(), FirExpre
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitQualifiedAccessExpression(this, data)
|
||||
|
||||
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> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpression
|
||||
|
||||
+4
@@ -6,6 +6,7 @@
|
||||
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.*
|
||||
|
||||
/*
|
||||
@@ -17,12 +18,15 @@ interface FirQualifiedAccessWithoutCallee : FirStatement {
|
||||
override val source: FirSourceElement?
|
||||
override val annotations: List<FirAnnotationCall>
|
||||
val safe: Boolean
|
||||
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 <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
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirPureAbstractElement
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
@@ -24,6 +25,9 @@ abstract class FirResolvedQualifier : FirPureAbstractElement(), FirExpression {
|
||||
abstract val packageFqName: FqName
|
||||
abstract val relativeClassFqName: FqName?
|
||||
abstract val classId: ClassId?
|
||||
abstract val typeArguments: List<FirTypeProjection>
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitResolvedQualifier(this, data)
|
||||
|
||||
abstract fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirResolvedQualifier
|
||||
}
|
||||
|
||||
+4
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
@@ -20,6 +21,7 @@ abstract class FirThisReceiverExpression : FirQualifiedAccessExpression() {
|
||||
abstract override val typeRef: FirTypeRef
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val safe: Boolean
|
||||
abstract override val typeArguments: List<FirTypeProjection>
|
||||
abstract override val explicitReceiver: FirExpression?
|
||||
abstract override val dispatchReceiver: FirExpression
|
||||
abstract override val extensionReceiver: FirExpression
|
||||
@@ -27,6 +29,8 @@ abstract class FirThisReceiverExpression : FirQualifiedAccessExpression() {
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitThisReceiverExpression(this, data)
|
||||
|
||||
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirThisReceiverExpression
|
||||
|
||||
abstract override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirThisReceiverExpression
|
||||
|
||||
abstract override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirThisReceiverExpression
|
||||
|
||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.expressions
|
||||
import org.jetbrains.kotlin.fir.FirPureAbstractElement
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.references.FirReference
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
@@ -19,6 +20,7 @@ abstract class FirVariableAssignment : FirPureAbstractElement(), FirQualifiedAcc
|
||||
abstract override val source: FirSourceElement?
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val safe: Boolean
|
||||
abstract override val typeArguments: List<FirTypeProjection>
|
||||
abstract override val explicitReceiver: FirExpression?
|
||||
abstract override val dispatchReceiver: FirExpression
|
||||
abstract override val extensionReceiver: FirExpression
|
||||
@@ -28,6 +30,8 @@ abstract class FirVariableAssignment : FirPureAbstractElement(), FirQualifiedAcc
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitVariableAssignment(this, data)
|
||||
|
||||
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirVariableAssignment
|
||||
|
||||
abstract override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirVariableAssignment
|
||||
|
||||
abstract override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirVariableAssignment
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirOperation
|
||||
import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement
|
||||
import org.jetbrains.kotlin.fir.references.FirReference
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
@@ -26,6 +27,7 @@ class FirArraySetCallImpl(
|
||||
) : FirArraySetCall(), FirModifiableQualifiedAccess, FirAbstractAnnotatedElement {
|
||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||
override var safe: Boolean = false
|
||||
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||
override var explicitReceiver: FirExpression? = null
|
||||
override var dispatchReceiver: FirExpression = FirNoReceiverExpression
|
||||
override var extensionReceiver: FirExpression = FirNoReceiverExpression
|
||||
@@ -40,6 +42,7 @@ class FirArraySetCallImpl(
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
annotations.forEach { it.accept(visitor, data) }
|
||||
typeArguments.forEach { it.accept(visitor, data) }
|
||||
explicitReceiver?.accept(visitor, data)
|
||||
if (dispatchReceiver !== explicitReceiver) {
|
||||
dispatchReceiver.accept(visitor, data)
|
||||
@@ -54,6 +57,7 @@ class FirArraySetCallImpl(
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirArraySetCallImpl {
|
||||
annotations.transformInplace(transformer, data)
|
||||
transformTypeArguments(transformer, data)
|
||||
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||
if (dispatchReceiver !== explicitReceiver) {
|
||||
dispatchReceiver = dispatchReceiver.transformSingle(transformer, data)
|
||||
@@ -67,6 +71,11 @@ class FirArraySetCallImpl(
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirArraySetCallImpl {
|
||||
typeArguments.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirArraySetCallImpl {
|
||||
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||
return this
|
||||
|
||||
+9
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
@@ -26,6 +27,7 @@ class FirCallableReferenceAccessImpl(
|
||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
|
||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||
override var safe: Boolean = false
|
||||
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||
override var explicitReceiver: FirExpression? = null
|
||||
override var dispatchReceiver: FirExpression = FirNoReceiverExpression
|
||||
override var extensionReceiver: FirExpression = FirNoReceiverExpression
|
||||
@@ -34,6 +36,7 @@ class FirCallableReferenceAccessImpl(
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
typeRef.accept(visitor, data)
|
||||
annotations.forEach { it.accept(visitor, data) }
|
||||
typeArguments.forEach { it.accept(visitor, data) }
|
||||
explicitReceiver?.accept(visitor, data)
|
||||
if (dispatchReceiver !== explicitReceiver) {
|
||||
dispatchReceiver.accept(visitor, data)
|
||||
@@ -47,6 +50,7 @@ class FirCallableReferenceAccessImpl(
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirCallableReferenceAccessImpl {
|
||||
typeRef = typeRef.transformSingle(transformer, data)
|
||||
annotations.transformInplace(transformer, data)
|
||||
transformTypeArguments(transformer, data)
|
||||
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||
if (dispatchReceiver !== explicitReceiver) {
|
||||
dispatchReceiver = dispatchReceiver.transformSingle(transformer, data)
|
||||
@@ -58,6 +62,11 @@ class FirCallableReferenceAccessImpl(
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirCallableReferenceAccessImpl {
|
||||
typeArguments.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirCallableReferenceAccessImpl {
|
||||
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||
return this
|
||||
|
||||
+8
-8
@@ -31,17 +31,17 @@ class FirComponentCallImpl(
|
||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
|
||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||
override val safe: Boolean get() = false
|
||||
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||
override val dispatchReceiver: FirExpression get() = FirNoReceiverExpression
|
||||
override val extensionReceiver: FirExpression get() = FirNoReceiverExpression
|
||||
override val arguments: MutableList<FirExpression> = mutableListOf()
|
||||
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||
override var calleeReference: FirNamedReference = FirSimpleNamedReference(source, Name.identifier("component$componentIndex"), null)
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
typeRef.accept(visitor, data)
|
||||
annotations.forEach { it.accept(visitor, data) }
|
||||
arguments.forEach { it.accept(visitor, data) }
|
||||
typeArguments.forEach { it.accept(visitor, data) }
|
||||
arguments.forEach { it.accept(visitor, data) }
|
||||
calleeReference.accept(visitor, data)
|
||||
explicitReceiver.accept(visitor, data)
|
||||
if (dispatchReceiver !== explicitReceiver) {
|
||||
@@ -55,13 +55,18 @@ class FirComponentCallImpl(
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirComponentCallImpl {
|
||||
typeRef = typeRef.transformSingle(transformer, data)
|
||||
annotations.transformInplace(transformer, data)
|
||||
transformArguments(transformer, data)
|
||||
transformTypeArguments(transformer, data)
|
||||
transformArguments(transformer, data)
|
||||
transformCalleeReference(transformer, data)
|
||||
explicitReceiver = explicitReceiver.transformSingle(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirComponentCallImpl {
|
||||
typeArguments.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirComponentCallImpl {
|
||||
return this
|
||||
}
|
||||
@@ -75,11 +80,6 @@ class FirComponentCallImpl(
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirComponentCallImpl {
|
||||
typeArguments.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirComponentCallImpl {
|
||||
calleeReference = calleeReference.transformSingle(transformer, data)
|
||||
return this
|
||||
|
||||
+6
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirReference
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
@@ -30,6 +31,7 @@ class FirExpressionWithSmartcastImpl(
|
||||
override val source: FirSourceElement? get() = originalExpression.source
|
||||
override val annotations: List<FirAnnotationCall> get() = originalExpression.annotations
|
||||
override val safe: Boolean get() = originalExpression.safe
|
||||
override val typeArguments: List<FirTypeProjection> get() = originalExpression.typeArguments
|
||||
override val explicitReceiver: FirExpression? get() = originalExpression.explicitReceiver
|
||||
override val dispatchReceiver: FirExpression get() = originalExpression.dispatchReceiver
|
||||
override val extensionReceiver: FirExpression get() = originalExpression.extensionReceiver
|
||||
@@ -61,5 +63,9 @@ class FirExpressionWithSmartcastImpl(
|
||||
throw IllegalStateException()
|
||||
}
|
||||
|
||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcast {
|
||||
throw IllegalStateException()
|
||||
}
|
||||
|
||||
override fun replaceTypeRef(newTypeRef: FirTypeRef) {}
|
||||
}
|
||||
+8
-8
@@ -27,16 +27,17 @@ class FirFunctionCallImpl(
|
||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
|
||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||
override var safe: Boolean = false
|
||||
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||
override var explicitReceiver: FirExpression? = null
|
||||
override var dispatchReceiver: FirExpression = FirNoReceiverExpression
|
||||
override var extensionReceiver: FirExpression = FirNoReceiverExpression
|
||||
override val arguments: MutableList<FirExpression> = mutableListOf()
|
||||
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||
override lateinit var calleeReference: FirNamedReference
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
typeRef.accept(visitor, data)
|
||||
annotations.forEach { it.accept(visitor, data) }
|
||||
typeArguments.forEach { it.accept(visitor, data) }
|
||||
explicitReceiver?.accept(visitor, data)
|
||||
if (dispatchReceiver !== explicitReceiver) {
|
||||
dispatchReceiver.accept(visitor, data)
|
||||
@@ -45,13 +46,13 @@ class FirFunctionCallImpl(
|
||||
extensionReceiver.accept(visitor, data)
|
||||
}
|
||||
arguments.forEach { it.accept(visitor, data) }
|
||||
typeArguments.forEach { it.accept(visitor, data) }
|
||||
calleeReference.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirFunctionCallImpl {
|
||||
typeRef = typeRef.transformSingle(transformer, data)
|
||||
annotations.transformInplace(transformer, data)
|
||||
transformTypeArguments(transformer, data)
|
||||
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||
if (dispatchReceiver !== explicitReceiver) {
|
||||
dispatchReceiver = dispatchReceiver.transformSingle(transformer, data)
|
||||
@@ -60,11 +61,15 @@ class FirFunctionCallImpl(
|
||||
extensionReceiver = extensionReceiver.transformSingle(transformer, data)
|
||||
}
|
||||
transformArguments(transformer, data)
|
||||
transformTypeArguments(transformer, data)
|
||||
transformCalleeReference(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirFunctionCallImpl {
|
||||
typeArguments.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirFunctionCallImpl {
|
||||
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||
return this
|
||||
@@ -85,11 +90,6 @@ class FirFunctionCallImpl(
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirFunctionCallImpl {
|
||||
typeArguments.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirFunctionCallImpl {
|
||||
calleeReference = calleeReference.transformSingle(transformer, data)
|
||||
return this
|
||||
|
||||
+4
@@ -10,6 +10,7 @@ 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.impl.FirAbstractAnnotatedElement
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
@@ -21,11 +22,14 @@ interface FirModifiableQualifiedAccess : FirQualifiedAccessWithoutCallee, FirAbs
|
||||
override val source: FirSourceElement?
|
||||
override val annotations: MutableList<FirAnnotationCall>
|
||||
override var safe: Boolean
|
||||
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> 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
|
||||
|
||||
+9
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||
import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement
|
||||
import org.jetbrains.kotlin.fir.references.FirReference
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
@@ -26,6 +27,7 @@ class FirQualifiedAccessExpressionImpl(
|
||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
|
||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||
override var safe: Boolean = false
|
||||
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||
override var explicitReceiver: FirExpression? = null
|
||||
override var dispatchReceiver: FirExpression = FirNoReceiverExpression
|
||||
override var extensionReceiver: FirExpression = FirNoReceiverExpression
|
||||
@@ -34,6 +36,7 @@ class FirQualifiedAccessExpressionImpl(
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
typeRef.accept(visitor, data)
|
||||
annotations.forEach { it.accept(visitor, data) }
|
||||
typeArguments.forEach { it.accept(visitor, data) }
|
||||
explicitReceiver?.accept(visitor, data)
|
||||
if (dispatchReceiver !== explicitReceiver) {
|
||||
dispatchReceiver.accept(visitor, data)
|
||||
@@ -47,6 +50,7 @@ class FirQualifiedAccessExpressionImpl(
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpressionImpl {
|
||||
typeRef = typeRef.transformSingle(transformer, data)
|
||||
annotations.transformInplace(transformer, data)
|
||||
transformTypeArguments(transformer, data)
|
||||
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||
if (dispatchReceiver !== explicitReceiver) {
|
||||
dispatchReceiver = dispatchReceiver.transformSingle(transformer, data)
|
||||
@@ -58,6 +62,11 @@ class FirQualifiedAccessExpressionImpl(
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpressionImpl {
|
||||
typeArguments.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccessExpressionImpl {
|
||||
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||
return this
|
||||
|
||||
+9
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||
import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
@@ -30,15 +31,23 @@ class FirResolvedQualifierImpl(
|
||||
override val classId: ClassId? get() = relativeClassFqName?.let {
|
||||
ClassId(packageFqName, it, false)
|
||||
}
|
||||
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
typeRef.accept(visitor, data)
|
||||
annotations.forEach { it.accept(visitor, data) }
|
||||
typeArguments.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirResolvedQualifierImpl {
|
||||
typeRef = typeRef.transformSingle(transformer, data)
|
||||
annotations.transformInplace(transformer, data)
|
||||
transformTypeArguments(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirResolvedQualifierImpl {
|
||||
typeArguments.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
+9
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression
|
||||
import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement
|
||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
@@ -27,6 +28,7 @@ class FirThisReceiverExpressionImpl(
|
||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
|
||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||
override var safe: Boolean = false
|
||||
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||
override var explicitReceiver: FirExpression? = null
|
||||
override var dispatchReceiver: FirExpression = FirNoReceiverExpression
|
||||
override var extensionReceiver: FirExpression = FirNoReceiverExpression
|
||||
@@ -34,6 +36,7 @@ class FirThisReceiverExpressionImpl(
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
typeRef.accept(visitor, data)
|
||||
annotations.forEach { it.accept(visitor, data) }
|
||||
typeArguments.forEach { it.accept(visitor, data) }
|
||||
explicitReceiver?.accept(visitor, data)
|
||||
if (dispatchReceiver !== explicitReceiver) {
|
||||
dispatchReceiver.accept(visitor, data)
|
||||
@@ -47,6 +50,7 @@ class FirThisReceiverExpressionImpl(
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirThisReceiverExpressionImpl {
|
||||
typeRef = typeRef.transformSingle(transformer, data)
|
||||
annotations.transformInplace(transformer, data)
|
||||
transformTypeArguments(transformer, data)
|
||||
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||
if (dispatchReceiver !== explicitReceiver) {
|
||||
dispatchReceiver = dispatchReceiver.transformSingle(transformer, data)
|
||||
@@ -58,6 +62,11 @@ class FirThisReceiverExpressionImpl(
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirThisReceiverExpressionImpl {
|
||||
typeArguments.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirThisReceiverExpressionImpl {
|
||||
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||
return this
|
||||
|
||||
+9
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
||||
import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement
|
||||
import org.jetbrains.kotlin.fir.references.FirReference
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
@@ -24,6 +25,7 @@ class FirVariableAssignmentImpl(
|
||||
override var rValue: FirExpression
|
||||
) : FirVariableAssignment(), FirModifiableQualifiedAccess, FirAbstractAnnotatedElement {
|
||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||
override var explicitReceiver: FirExpression? = null
|
||||
override var dispatchReceiver: FirExpression = FirNoReceiverExpression
|
||||
override var extensionReceiver: FirExpression = FirNoReceiverExpression
|
||||
@@ -36,6 +38,7 @@ class FirVariableAssignmentImpl(
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
annotations.forEach { it.accept(visitor, data) }
|
||||
typeArguments.forEach { it.accept(visitor, data) }
|
||||
explicitReceiver?.accept(visitor, data)
|
||||
if (dispatchReceiver !== explicitReceiver) {
|
||||
dispatchReceiver.accept(visitor, data)
|
||||
@@ -49,6 +52,7 @@ class FirVariableAssignmentImpl(
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirVariableAssignmentImpl {
|
||||
annotations.transformInplace(transformer, data)
|
||||
transformTypeArguments(transformer, data)
|
||||
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||
if (dispatchReceiver !== explicitReceiver) {
|
||||
dispatchReceiver = dispatchReceiver.transformSingle(transformer, data)
|
||||
@@ -61,6 +65,11 @@ class FirVariableAssignmentImpl(
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirVariableAssignmentImpl {
|
||||
typeArguments.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirVariableAssignmentImpl {
|
||||
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||
return this
|
||||
|
||||
+2
-1
@@ -173,6 +173,7 @@ object NodeConfigurator : AbstractFieldConfigurator() {
|
||||
|
||||
qualifiedAccessWithoutCallee.configure {
|
||||
+booleanField("safe")
|
||||
+typeArguments.withTransform()
|
||||
+receivers
|
||||
}
|
||||
|
||||
@@ -183,7 +184,6 @@ object NodeConfigurator : AbstractFieldConfigurator() {
|
||||
}
|
||||
|
||||
functionCall.configure {
|
||||
+typeArguments.withTransform()
|
||||
+field("calleeReference", namedReference)
|
||||
}
|
||||
|
||||
@@ -428,6 +428,7 @@ object NodeConfigurator : AbstractFieldConfigurator() {
|
||||
+field("packageFqName", fqNameType)
|
||||
+field("relativeClassFqName", fqNameType, nullable = true)
|
||||
+field("classId", classIdType, nullable = true)
|
||||
+typeArguments.withTransform()
|
||||
}
|
||||
|
||||
stringConcatenationCall.configure {
|
||||
|
||||
Reference in New Issue
Block a user