Optimization: make FIR expression an abstract class
NB: this commit does significant fir:tree refactoring. It provides some boost due to faster abstract class dispatching in JVM.
This commit is contained in:
@@ -474,7 +474,7 @@ internal fun generateTemporaryVariable(
|
|||||||
session: FirSession, psi: PsiElement?, specialName: String, initializer: FirExpression
|
session: FirSession, psi: PsiElement?, specialName: String, initializer: FirExpression
|
||||||
): FirVariable = generateTemporaryVariable(session, psi, Name.special("<$specialName>"), initializer)
|
): FirVariable = generateTemporaryVariable(session, psi, Name.special("<$specialName>"), initializer)
|
||||||
|
|
||||||
private fun FirModifiableQualifiedAccess.initializeLValue(
|
private fun FirModifiableQualifiedAccess<*>.initializeLValue(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
left: KtExpression?,
|
left: KtExpression?,
|
||||||
convertQualified: KtQualifiedExpression.() -> FirQualifiedAccess?
|
convertQualified: KtQualifiedExpression.() -> FirQualifiedAccess?
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KtCallElement.extractArgumentsTo(container: FirAbstractCall) {
|
private fun KtCallElement.extractArgumentsTo(container: FirCallWithArgumentList) {
|
||||||
for (argument in this.valueArguments) {
|
for (argument in this.valueArguments) {
|
||||||
val argumentExpression = argument.toFirExpression()
|
val argumentExpression = argument.toFirExpression()
|
||||||
container.arguments += when (argument) {
|
container.arguments += when (argument) {
|
||||||
@@ -1124,7 +1124,7 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun FirAbstractLoopJump.bindLabel(expression: KtExpressionWithLabel): FirAbstractLoopJump {
|
private fun FirLoopJump.bindLabel(expression: KtExpressionWithLabel): FirLoopJump {
|
||||||
val labelName = expression.getLabelName()
|
val labelName = expression.getLabelName()
|
||||||
target = FirLoopTarget(labelName)
|
target = FirLoopTarget(labelName)
|
||||||
val lastLoop = firLoops.lastOrNull()
|
val lastLoop = firLoops.lastOrNull()
|
||||||
@@ -1301,7 +1301,7 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
val selector = expression.selectorExpression
|
val selector = expression.selectorExpression
|
||||||
?: return FirErrorExpressionImpl(session, expression, "Qualified expression without selector")
|
?: return FirErrorExpressionImpl(session, expression, "Qualified expression without selector")
|
||||||
val firSelector = selector.toFirExpression("Incorrect selector expression")
|
val firSelector = selector.toFirExpression("Incorrect selector expression")
|
||||||
if (firSelector is FirModifiableQualifiedAccess) {
|
if (firSelector is FirModifiableQualifiedAccess<*>) {
|
||||||
firSelector.safe = expression is KtSafeQualifiedExpression
|
firSelector.safe = expression is KtSafeQualifiedExpression
|
||||||
firSelector.explicitReceiver = expression.receiverExpression.toFirExpression("Incorrect receiver expression")
|
firSelector.explicitReceiver = expression.receiverExpression.toFirExpression("Incorrect receiver expression")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.*
|
|||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
|
import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionStub
|
import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionStub
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirLoopJump
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
|
||||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol
|
||||||
@@ -587,8 +588,8 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
whileLoop.block.accept(this)
|
whileLoop.block.accept(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun visitLoopJump(jump: FirJump<FirLoop>) {
|
override fun visitLoopJump(loopJump: FirLoopJump) {
|
||||||
val target = jump.target
|
val target = loopJump.target
|
||||||
val labeledElement = target.labeledElement
|
val labeledElement = target.labeledElement
|
||||||
print("@@@[")
|
print("@@@[")
|
||||||
labeledElement.condition.accept(this)
|
labeledElement.condition.accept(this)
|
||||||
|
|||||||
@@ -5,14 +5,19 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.declarations
|
package org.jetbrains.kotlin.fir.declarations
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirLabeledElement
|
import org.jetbrains.kotlin.fir.FirLabeledElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeExpression
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirAnonymousFunction : @VisitedSupertype FirFunction, FirExpression, FirTypedDeclaration, FirLabeledElement {
|
abstract class FirAnonymousFunction(
|
||||||
val receiverTypeRef: FirTypeRef?
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : @VisitedSupertype FirFunction, FirUnknownTypeExpression(session, psi), FirTypedDeclaration, FirLabeledElement {
|
||||||
|
abstract val receiverTypeRef: FirTypeRef?
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitAnonymousFunction(this, data)
|
visitor.visitAnonymousFunction(this, data)
|
||||||
|
|||||||
@@ -5,12 +5,18 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.declarations
|
package org.jetbrains.kotlin.fir.declarations
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeExpression
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirAnonymousObject : @VisitedSupertype FirClass, FirExpression {
|
abstract class FirAnonymousObject(
|
||||||
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : @VisitedSupertype FirClass, FirUnknownTypeExpression(session, psi) {
|
||||||
override val classKind: ClassKind
|
override val classKind: ClassKind
|
||||||
get() = ClassKind.OBJECT
|
get() = ClassKind.OBJECT
|
||||||
|
|
||||||
@@ -19,6 +25,6 @@ interface FirAnonymousObject : @VisitedSupertype FirClass, FirExpression {
|
|||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
super<FirClass>.acceptChildren(visitor, data)
|
super<FirClass>.acceptChildren(visitor, data)
|
||||||
super<FirExpression>.acceptChildren(visitor, data)
|
super<FirUnknownTypeExpression>.acceptChildren(visitor, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,13 +5,18 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.declarations
|
package org.jetbrains.kotlin.fir.declarations
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.BaseTransformedType
|
import org.jetbrains.kotlin.fir.BaseTransformedType
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirCall
|
import org.jetbrains.kotlin.fir.expressions.FirCall
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
@BaseTransformedType
|
@BaseTransformedType
|
||||||
interface FirEnumEntry : @VisitedSupertype FirRegularClass, FirCall {
|
abstract class FirEnumEntry(
|
||||||
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : @VisitedSupertype FirRegularClass, FirCall(session, psi) {
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitEnumEntry(this, data)
|
visitor.visitEnumEntry(this, data)
|
||||||
|
|
||||||
|
|||||||
+11
-13
@@ -6,13 +6,11 @@
|
|||||||
package org.jetbrains.kotlin.fir.declarations.impl
|
package org.jetbrains.kotlin.fir.declarations.impl
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.*
|
||||||
import org.jetbrains.kotlin.fir.FirLabel
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirAnonymousFunctionImpl(
|
class FirAnonymousFunctionImpl(
|
||||||
@@ -20,21 +18,21 @@ class FirAnonymousFunctionImpl(
|
|||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override var returnTypeRef: FirTypeRef,
|
override var returnTypeRef: FirTypeRef,
|
||||||
override var receiverTypeRef: FirTypeRef?
|
override var receiverTypeRef: FirTypeRef?
|
||||||
) : FirAbstractFunction(session, psi), FirAnonymousFunction, FirModifiableFunction {
|
) : FirAnonymousFunction(session, psi), FirModifiableFunction {
|
||||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(session, null)
|
|
||||||
|
|
||||||
override var label: FirLabel? = null
|
override var label: FirLabel? = null
|
||||||
|
|
||||||
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
override val valueParameters = mutableListOf<FirValueParameter>()
|
||||||
typeRef = newTypeRef
|
|
||||||
}
|
override var body: FirBlock? = null
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
typeRef = typeRef.transformSingle(transformer, data)
|
|
||||||
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||||
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
|
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
|
||||||
label = label?.transformSingle(transformer, data)
|
label = label?.transformSingle(transformer, data)
|
||||||
return super<FirAbstractFunction>.transformChildren(transformer, data)
|
valueParameters.transformInplace(transformer, data)
|
||||||
|
body = body?.transformSingle(transformer, data)
|
||||||
|
|
||||||
|
return super<FirAnonymousFunction>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D) {
|
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D) {
|
||||||
|
|||||||
+2
-11
@@ -11,35 +11,26 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousObject
|
import org.jetbrains.kotlin.fir.declarations.FirAnonymousObject
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.transformInplace
|
import org.jetbrains.kotlin.fir.transformInplace
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
class FirAnonymousObjectImpl(
|
class FirAnonymousObjectImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractAnnotatedDeclaration(session, psi), FirAnonymousObject, FirModifiableClass {
|
) : FirAnonymousObject(session, psi), FirModifiableClass {
|
||||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(session, null)
|
|
||||||
|
|
||||||
override val superTypeRefs = mutableListOf<FirTypeRef>()
|
override val superTypeRefs = mutableListOf<FirTypeRef>()
|
||||||
|
|
||||||
override val declarations = mutableListOf<FirDeclaration>()
|
override val declarations = mutableListOf<FirDeclaration>()
|
||||||
|
|
||||||
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
|
||||||
typeRef = newTypeRef
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
||||||
return super<FirAnonymousObject>.accept(visitor, data)
|
return super<FirAnonymousObject>.accept(visitor, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
typeRef = typeRef.transformSingle(transformer, data)
|
|
||||||
superTypeRefs.transformInplace(transformer, data)
|
superTypeRefs.transformInplace(transformer, data)
|
||||||
declarations.transformInplace(transformer, data)
|
declarations.transformInplace(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractAnnotatedDeclaration>.transformChildren(transformer, data)
|
return super<FirAnonymousObject>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+42
-20
@@ -10,8 +10,7 @@ import org.jetbrains.kotlin.descriptors.ClassKind
|
|||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirEnumEntry
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirCall
|
import org.jetbrains.kotlin.fir.expressions.FirCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||||
@@ -21,40 +20,63 @@ import org.jetbrains.kotlin.fir.types.FirTypeRef
|
|||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitEnumTypeRef
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitEnumTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||||
|
|
||||||
class FirEnumEntryImpl(
|
class FirEnumEntryImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
symbol: FirClassSymbol,
|
override val symbol: FirClassSymbol,
|
||||||
name: Name
|
override val name: Name
|
||||||
) : FirClassImpl(
|
) : FirEnumEntry(session, psi), FirModifiableClass {
|
||||||
session,
|
init {
|
||||||
psi,
|
symbol.bind(this)
|
||||||
symbol,
|
}
|
||||||
name,
|
|
||||||
visibility = Visibilities.UNKNOWN,
|
override var status = FirDeclarationStatusImpl(session, Visibilities.UNKNOWN, Modality.FINAL)
|
||||||
modality = Modality.FINAL,
|
|
||||||
isExpect = false,
|
override val classKind: ClassKind
|
||||||
isActual = false,
|
get() = ClassKind.ENUM_ENTRY
|
||||||
classKind = ClassKind.ENUM_ENTRY,
|
|
||||||
isInner = false,
|
override val typeParameters = mutableListOf<FirTypeParameter>()
|
||||||
isCompanion = false,
|
|
||||||
isData = false,
|
override val superTypeRefs = mutableListOf<FirTypeRef>()
|
||||||
isInline = false
|
|
||||||
), FirEnumEntry {
|
override val declarations = mutableListOf<FirDeclaration>()
|
||||||
|
|
||||||
|
override val companionObject: FirRegularClass?
|
||||||
|
get() = null
|
||||||
|
|
||||||
override var typeRef: FirTypeRef = FirImplicitEnumTypeRef(session, null)
|
override var typeRef: FirTypeRef = FirImplicitEnumTypeRef(session, null)
|
||||||
|
|
||||||
override val arguments = mutableListOf<FirExpression>()
|
override val arguments = mutableListOf<FirExpression>()
|
||||||
|
|
||||||
|
override fun replaceSupertypes(newSupertypes: List<FirTypeRef>): FirRegularClass {
|
||||||
|
superTypeRefs.clear()
|
||||||
|
superTypeRefs.addAll(newSupertypes)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
||||||
typeRef = newTypeRef
|
typeRef = newTypeRef
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun addDeclaration(declaration: FirDeclaration) {
|
||||||
|
declarations += declaration
|
||||||
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirRegularClass {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirRegularClass {
|
||||||
|
superTypeRefs.transformInplace(transformer, data)
|
||||||
|
typeParameters.transformInplace(transformer, data)
|
||||||
|
status = status.transformSingle(transformer, data)
|
||||||
|
|
||||||
|
declarations.firstIsInstanceOrNull<FirConstructorImpl>()?.typeParameters?.transformInplace(transformer, data)
|
||||||
|
// Transform declarations in last turn
|
||||||
|
declarations.transformInplace(transformer, data)
|
||||||
|
|
||||||
typeRef = typeRef.transformSingle(transformer, data)
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
arguments.transformInplace(transformer, data)
|
arguments.transformInplace(transformer, data)
|
||||||
|
|
||||||
return super<FirClassImpl>.transformChildren(transformer, data)
|
return super<FirEnumEntry>.transformChildren(transformer, data) as FirRegularClass
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformArguments(transformer: FirTransformer<D>, data: D): FirCall {
|
override fun <D> transformArguments(transformer: FirTransformer<D>, data: D): FirCall {
|
||||||
|
|||||||
@@ -5,8 +5,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||||
import org.jetbrains.kotlin.fir.BaseTransformedType
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeCallWithArgumentList
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
@@ -14,12 +16,14 @@ import org.jetbrains.kotlin.fir.types.*
|
|||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
@BaseTransformedType
|
abstract class FirAnnotationCall(
|
||||||
interface FirAnnotationCall : FirCall {
|
session: FirSession,
|
||||||
val annotationTypeRef: FirTypeRef
|
psi: PsiElement?
|
||||||
|
) : FirUnknownTypeCallWithArgumentList(session, psi) {
|
||||||
|
abstract val annotationTypeRef: FirTypeRef
|
||||||
|
|
||||||
// May be should be not-null (with correct default target)
|
// May be should be not-null (with correct default target)
|
||||||
val useSiteTarget: AnnotationUseSiteTarget?
|
abstract val useSiteTarget: AnnotationUseSiteTarget?
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitAnnotationCall(this, data)
|
visitor.visitAnnotationCall(this, data)
|
||||||
|
|||||||
@@ -5,9 +5,15 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeCallWithArgumentList
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirArrayOfCall : FirCall {
|
abstract class FirArrayOfCall(
|
||||||
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirUnknownTypeCallWithArgumentList(session, psi) {
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitArrayOfCall(this, data)
|
visitor.visitArrayOfCall(this, data)
|
||||||
}
|
}
|
||||||
@@ -5,12 +5,17 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirArraySetCall : @VisitedSupertype FirCall, FirAssignment {
|
abstract class FirArraySetCall(
|
||||||
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : @VisitedSupertype FirCall(session, psi), FirAssignment {
|
||||||
// NB: arguments of this thing are indexes AND rvalue
|
// NB: arguments of this thing are indexes AND rvalue
|
||||||
val indexes: List<FirExpression>
|
abstract val indexes: List<FirExpression>
|
||||||
|
|
||||||
override val arguments get() = indexes + rValue
|
override val arguments get() = indexes + rValue
|
||||||
|
|
||||||
@@ -18,11 +23,8 @@ interface FirArraySetCall : @VisitedSupertype FirCall, FirAssignment {
|
|||||||
visitor.visitArraySetCall(this, data)
|
visitor.visitArraySetCall(this, data)
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
for (index in indexes) {
|
super<FirCall>.acceptChildren(visitor, data)
|
||||||
index.accept(visitor, data)
|
calleeReference.accept(visitor, data)
|
||||||
}
|
rValue.accept(visitor, data)
|
||||||
acceptAnnotations(visitor, data)
|
|
||||||
typeRef.accept(visitor, data)
|
|
||||||
super<FirAssignment>.acceptChildren(visitor, data)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,10 +5,16 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeExpression
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirBlock : FirExpression {
|
abstract class FirBlock(
|
||||||
val statements: List<FirStatement>
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirUnknownTypeExpression(session, psi) {
|
||||||
|
abstract val statements: List<FirStatement>
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitBlock(this, data)
|
visitor.visitBlock(this, data)
|
||||||
|
|||||||
@@ -5,9 +5,15 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirLoopJump
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirBreakExpression : FirJump<FirLoop> {
|
abstract class FirBreakExpression(
|
||||||
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirLoopJump(session, psi) {
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitBreakExpression(this, data)
|
visitor.visitBreakExpression(this, data)
|
||||||
}
|
}
|
||||||
@@ -5,13 +5,18 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.BaseTransformedType
|
import org.jetbrains.kotlin.fir.BaseTransformedType
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
@BaseTransformedType
|
@BaseTransformedType
|
||||||
interface FirCall : FirExpression {
|
abstract class FirCall(
|
||||||
val arguments: List<FirExpression>
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirExpression(session, psi) {
|
||||||
|
abstract val arguments: List<FirExpression>
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitCall(this, data)
|
visitor.visitCall(this, data)
|
||||||
@@ -23,5 +28,5 @@ interface FirCall : FirExpression {
|
|||||||
super.acceptChildren(visitor, data)
|
super.acceptChildren(visitor, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <D> transformArguments(transformer: FirTransformer<D>, data: D): FirCall
|
abstract fun <D> transformArguments(transformer: FirTransformer<D>, data: D): FirCall
|
||||||
}
|
}
|
||||||
+6
-1
@@ -5,9 +5,14 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirCallableReferenceAccess : FirQualifiedAccessExpression {
|
abstract class FirCallableReferenceAccess(
|
||||||
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirQualifiedAccessExpression(session, psi) {
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitCallableReferenceAccess(this, data)
|
visitor.visitCallableReferenceAccess(this, data)
|
||||||
}
|
}
|
||||||
+8
-2
@@ -5,11 +5,17 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeExpression
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirClassReferenceExpression : FirExpression {
|
abstract class FirClassReferenceExpression(
|
||||||
val classTypeRef: FirTypeRef
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirUnknownTypeExpression(session, psi) {
|
||||||
|
abstract val classTypeRef: FirTypeRef
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitClassReferenceExpression(this, data)
|
visitor.visitClassReferenceExpression(this, data)
|
||||||
|
|||||||
@@ -5,12 +5,19 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeExpression
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
||||||
|
|
||||||
interface FirConstExpression<T> : FirExpression {
|
abstract class FirConstExpression<T>(
|
||||||
val kind: IrConstKind<T>
|
session: FirSession,
|
||||||
val value: T
|
psi: PsiElement?
|
||||||
|
) : FirUnknownTypeExpression(session, psi) {
|
||||||
|
abstract val kind: IrConstKind<T>
|
||||||
|
|
||||||
|
abstract val value: T
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
||||||
return visitor.visitConstExpression(this, data)
|
return visitor.visitConstExpression(this, data)
|
||||||
|
|||||||
@@ -5,9 +5,15 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirLoopJump
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirContinueExpression : FirJump<FirLoop> {
|
abstract class FirContinueExpression(
|
||||||
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirLoopJump(session, psi) {
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitContinueExpression(this, data)
|
visitor.visitContinueExpression(this, data)
|
||||||
}
|
}
|
||||||
+10
-4
@@ -5,15 +5,21 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirCallWithArgumentList
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirDelegatedConstructorCall : @VisitedSupertype FirCall, FirQualifiedAccess {
|
abstract class FirDelegatedConstructorCall(
|
||||||
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : @VisitedSupertype FirCallWithArgumentList(session, psi), FirQualifiedAccess {
|
||||||
// Do we need 'constructedType: FirType' here?
|
// Do we need 'constructedType: FirType' here?
|
||||||
val constructedTypeRef: FirTypeRef
|
abstract val constructedTypeRef: FirTypeRef
|
||||||
|
|
||||||
val isThis: Boolean
|
abstract val isThis: Boolean
|
||||||
|
|
||||||
val isSuper: Boolean
|
val isSuper: Boolean
|
||||||
get() = !isThis
|
get() = !isThis
|
||||||
@@ -24,6 +30,6 @@ interface FirDelegatedConstructorCall : @VisitedSupertype FirCall, FirQualifiedA
|
|||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
constructedTypeRef.accept(visitor, data)
|
constructedTypeRef.accept(visitor, data)
|
||||||
calleeReference.accept(visitor, data)
|
calleeReference.accept(visitor, data)
|
||||||
super<FirCall>.acceptChildren(visitor, data)
|
super<FirCallWithArgumentList>.acceptChildren(visitor, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,10 +5,16 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeExpression
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirErrorExpression : FirExpression {
|
abstract class FirErrorExpression(
|
||||||
val reason: String
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirUnknownTypeExpression(session, psi) {
|
||||||
|
abstract val reason: String
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
||||||
return visitor.visitErrorExpression(this, data)
|
return visitor.visitErrorExpression(this, data)
|
||||||
|
|||||||
@@ -5,15 +5,21 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirResolvedCallableReference
|
import org.jetbrains.kotlin.fir.FirResolvedCallableReference
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirAnnotatedStatement
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirExpression : FirStatement {
|
abstract class FirExpression(
|
||||||
val typeRef: FirTypeRef
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirAnnotatedStatement(session, psi) {
|
||||||
|
abstract val typeRef: FirTypeRef
|
||||||
|
|
||||||
fun replaceTypeRef(newTypeRef: FirTypeRef)
|
abstract fun replaceTypeRef(newTypeRef: FirTypeRef)
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitExpression(this, data)
|
visitor.visitExpression(this, data)
|
||||||
|
|||||||
@@ -9,27 +9,25 @@ import com.intellij.psi.PsiElement
|
|||||||
import org.jetbrains.kotlin.fir.FirNamedReference
|
import org.jetbrains.kotlin.fir.FirNamedReference
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirAbstractCall
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeCallWithArgumentList
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeProjectionContainer
|
import org.jetbrains.kotlin.fir.types.FirTypeProjectionContainer
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
abstract class FirFunctionCall(
|
abstract class FirFunctionCall(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractCall(session, psi), @VisitedSupertype FirCall, FirQualifiedAccess, FirTypeProjectionContainer {
|
) : @VisitedSupertype FirUnknownTypeCallWithArgumentList(session, psi), FirQualifiedAccess, FirTypeProjectionContainer {
|
||||||
abstract override val calleeReference: FirNamedReference
|
abstract override val calleeReference: FirNamedReference
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitFunctionCall(this, data)
|
visitor.visitFunctionCall(this, data)
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
for (argument in arguments) {
|
calleeReference.accept(visitor, data)
|
||||||
argument.accept(visitor, data)
|
explicitReceiver?.accept(visitor, data)
|
||||||
}
|
|
||||||
for (typeArgument in typeArguments) {
|
for (typeArgument in typeArguments) {
|
||||||
typeArgument.accept(visitor, data)
|
typeArgument.accept(visitor, data)
|
||||||
}
|
}
|
||||||
typeRef.accept(visitor, data)
|
super<FirUnknownTypeCallWithArgumentList>.acceptChildren(visitor, data)
|
||||||
super<FirQualifiedAccess>.acceptChildren(visitor, data)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,9 +5,15 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeCallWithArgumentList
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirGetClassCall : FirCall {
|
abstract class FirGetClassCall(
|
||||||
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirUnknownTypeCallWithArgumentList(session, psi) {
|
||||||
val argument: FirExpression get() = arguments.first()
|
val argument: FirExpression get() = arguments.first()
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
|
|||||||
@@ -5,12 +5,17 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.FirTarget
|
import org.jetbrains.kotlin.fir.FirTarget
|
||||||
import org.jetbrains.kotlin.fir.FirTargetElement
|
import org.jetbrains.kotlin.fir.FirTargetElement
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirJump<E : FirTargetElement> : FirExpression {
|
abstract class FirJump<E : FirTargetElement>(
|
||||||
val target: FirTarget<E>
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirExpression(session, psi) {
|
||||||
|
abstract val target: FirTarget<E>
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitJump(this, data)
|
visitor.visitJump(this, data)
|
||||||
|
|||||||
@@ -5,10 +5,16 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirCallWithArgumentList
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirOperatorCall : FirCall {
|
abstract class FirOperatorCall(
|
||||||
val operation: FirOperation
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirCallWithArgumentList(session, psi) {
|
||||||
|
abstract val operation: FirOperation
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitOperatorCall(this, data)
|
visitor.visitOperatorCall(this, data)
|
||||||
|
|||||||
+10
-3
@@ -5,15 +5,22 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeExpression
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirQualifiedAccessExpression : @VisitedSupertype FirQualifiedAccess, FirExpression {
|
abstract class FirQualifiedAccessExpression(
|
||||||
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirQualifiedAccess, @VisitedSupertype FirUnknownTypeExpression(session, psi) {
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitQualifiedAccessExpression(this, data)
|
visitor.visitQualifiedAccessExpression(this, data)
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
super<FirQualifiedAccess>.acceptChildren(visitor, data)
|
calleeReference.accept(visitor, data)
|
||||||
typeRef.accept(visitor, data)
|
explicitReceiver?.accept(visitor, data)
|
||||||
|
super<FirUnknownTypeExpression>.acceptChildren(visitor, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,16 +5,23 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeExpression
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
interface FirResolvedQualifier : FirExpression {
|
abstract class FirResolvedQualifier(
|
||||||
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirUnknownTypeExpression(session, psi) {
|
||||||
|
abstract val packageFqName: FqName
|
||||||
|
|
||||||
|
abstract val relativeClassFqName: FqName?
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitResolvedQualifier(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitResolvedQualifier(this, data)
|
||||||
|
|
||||||
val packageFqName: FqName
|
|
||||||
val relativeClassFqName: FqName?
|
|
||||||
val classId
|
val classId
|
||||||
get() = relativeClassFqName?.let {
|
get() = relativeClassFqName?.let {
|
||||||
ClassId(packageFqName, it, false)
|
ClassId(packageFqName, it, false)
|
||||||
|
|||||||
@@ -5,11 +5,16 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirReturnExpression : FirJump<FirFunction> {
|
abstract class FirReturnExpression(
|
||||||
val result: FirExpression
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirJump<FirFunction>(session, psi) {
|
||||||
|
abstract val result: FirExpression
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitReturnExpression(this, data)
|
visitor.visitReturnExpression(this, data)
|
||||||
|
|||||||
+7
-1
@@ -5,9 +5,15 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirCallWithArgumentList
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirStringConcatenationCall : FirCall {
|
abstract class FirStringConcatenationCall(
|
||||||
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirCallWithArgumentList(session, psi) {
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitStringConcatenationCall(this, data)
|
visitor.visitStringConcatenationCall(this, data)
|
||||||
}
|
}
|
||||||
@@ -5,10 +5,15 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirThrowExpression : FirExpression {
|
abstract class FirThrowExpression(
|
||||||
val exception: FirExpression
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirExpression(session, psi) {
|
||||||
|
abstract val exception: FirExpression
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitThrowExpression(this, data)
|
visitor.visitThrowExpression(this, data)
|
||||||
|
|||||||
@@ -5,14 +5,20 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeExpression
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirTryExpression : FirExpression {
|
abstract class FirTryExpression(
|
||||||
val tryBlock: FirBlock
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirUnknownTypeExpression(session, psi) {
|
||||||
|
abstract val tryBlock: FirBlock
|
||||||
|
|
||||||
val catches: List<FirCatch>
|
abstract val catches: List<FirCatch>
|
||||||
|
|
||||||
val finallyBlock: FirBlock?
|
abstract val finallyBlock: FirBlock?
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitTryExpression(this, data)
|
visitor.visitTryExpression(this, data)
|
||||||
|
|||||||
@@ -5,14 +5,21 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirOperationBasedCall
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
// is/!is/as/as?
|
// is/!is/as/as?
|
||||||
interface FirTypeOperatorCall : FirOperatorCall {
|
abstract class FirTypeOperatorCall(
|
||||||
|
session: FirSession,
|
||||||
|
psi: PsiElement?,
|
||||||
|
operation: FirOperation
|
||||||
|
) : FirOperationBasedCall(session, psi, operation) {
|
||||||
val argument: FirExpression get() = arguments.first()
|
val argument: FirExpression get() = arguments.first()
|
||||||
|
|
||||||
val conversionTypeRef: FirTypeRef
|
abstract val conversionTypeRef: FirTypeRef
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitTypeOperatorCall(this, data)
|
visitor.visitTypeOperatorCall(this, data)
|
||||||
|
|||||||
+7
-1
@@ -5,9 +5,15 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeCallWithArgumentList
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirUncheckedNotNullCast : FirCall {
|
abstract class FirUncheckedNotNullCast(
|
||||||
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirUnknownTypeCallWithArgumentList(session, psi) {
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitUncheckedNotNullCast(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitUncheckedNotNullCast(this, data)
|
||||||
|
|
||||||
val expression: FirExpression get() = arguments[0]
|
val expression: FirExpression get() = arguments[0]
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.expressions
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
|
|||||||
@@ -5,20 +5,25 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeExpression
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirWhenExpression : FirExpression {
|
abstract class FirWhenExpression(
|
||||||
val subject: FirExpression?
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirUnknownTypeExpression(session, psi) {
|
||||||
|
abstract val subject: FirExpression?
|
||||||
|
|
||||||
// when (val subjectVariable = subject()) { ... }
|
// when (val subjectVariable = subject()) { ... }
|
||||||
val subjectVariable: FirVariable?
|
abstract val subjectVariable: FirVariable?
|
||||||
|
|
||||||
val branches: List<FirWhenBranch>
|
abstract val branches: List<FirWhenBranch>
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitWhenExpression(this, data)
|
visitor.visitWhenExpression(this, data)
|
||||||
|
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
subjectVariable?.accept(visitor, data) ?: subject?.accept(visitor, data)
|
subjectVariable?.accept(visitor, data) ?: subject?.accept(visitor, data)
|
||||||
for (branch in branches) {
|
for (branch in branches) {
|
||||||
|
|||||||
+8
-2
@@ -5,11 +5,17 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.FirWhenSubject
|
import org.jetbrains.kotlin.fir.FirWhenSubject
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeExpression
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirWhenSubjectExpression : FirExpression {
|
abstract class FirWhenSubjectExpression(
|
||||||
val whenSubject: FirWhenSubject
|
session: FirSession,
|
||||||
|
psi: PsiElement?
|
||||||
|
) : FirUnknownTypeExpression(session, psi) {
|
||||||
|
abstract val whenSubject: FirWhenSubject
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitWhenSubjectExpression(this, data)
|
visitor.visitWhenSubjectExpression(this, data)
|
||||||
|
|||||||
+2
-3
@@ -7,14 +7,13 @@ package org.jetbrains.kotlin.fir.expressions
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirAbstractStatement
|
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
abstract class FirWrappedArgumentExpression(
|
abstract class FirWrappedArgumentExpression(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractStatement(session, psi), FirExpression {
|
) : FirExpression(session, psi) {
|
||||||
abstract val expression: FirExpression
|
abstract val expression: FirExpression
|
||||||
|
|
||||||
open val isSpread: Boolean
|
open val isSpread: Boolean
|
||||||
@@ -32,6 +31,6 @@ abstract class FirWrappedArgumentExpression(
|
|||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
expression.accept(visitor, data)
|
expression.accept(visitor, data)
|
||||||
super<FirExpression>.acceptChildren(visitor, data)
|
super.acceptChildren(visitor, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -16,7 +16,7 @@ abstract class FirAbstractLoop(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override var condition: FirExpression
|
override var condition: FirExpression
|
||||||
) : FirAbstractStatement(session, psi), FirLoop {
|
) : FirAnnotatedStatement(session, psi), FirLoop {
|
||||||
override lateinit var block: FirBlock
|
override lateinit var block: FirBlock
|
||||||
|
|
||||||
override var label: FirLabel? = null
|
override var label: FirLabel? = null
|
||||||
@@ -25,6 +25,6 @@ abstract class FirAbstractLoop(
|
|||||||
condition = condition.transformSingle(transformer, data)
|
condition = condition.transformSingle(transformer, data)
|
||||||
block = block.transformSingle(transformer, data)
|
block = block.transformSingle(transformer, data)
|
||||||
label = label?.transformSingle(transformer, data)
|
label = label?.transformSingle(transformer, data)
|
||||||
return super<FirAbstractStatement>.transformChildren(transformer, data)
|
return super<FirAnnotatedStatement>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -15,7 +15,7 @@ abstract class FirAbstractQualifiedAccess(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
final override var safe: Boolean = false
|
final override var safe: Boolean = false
|
||||||
) : FirAbstractStatement(session, psi), FirModifiableQualifiedAccess {
|
) : FirAnnotatedStatement(session, psi), FirModifiableQualifiedAccess<FirReference> {
|
||||||
final override lateinit var calleeReference: FirReference
|
final override lateinit var calleeReference: FirReference
|
||||||
|
|
||||||
final override var explicitReceiver: FirExpression? = null
|
final override var explicitReceiver: FirExpression? = null
|
||||||
@@ -23,7 +23,7 @@ abstract class FirAbstractQualifiedAccess(
|
|||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
calleeReference = calleeReference.transformSingle(transformer, data)
|
calleeReference = calleeReference.transformSingle(transformer, data)
|
||||||
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||||
return super<FirAbstractStatement>.transformChildren(transformer, data)
|
return super<FirAnnotatedStatement>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirQualifiedAccess {
|
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirQualifiedAccess {
|
||||||
|
|||||||
+1
-1
@@ -9,7 +9,7 @@ import com.intellij.psi.PsiElement
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||||
|
|
||||||
abstract class FirAbstractStatement(
|
abstract class FirAnnotatedStatement(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractAnnotatedElement(session, psi), FirStatement
|
) : FirAbstractAnnotatedElement(session, psi), FirStatement
|
||||||
+2
-2
@@ -19,10 +19,10 @@ class FirAnnotationCallImpl(
|
|||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override val useSiteTarget: AnnotationUseSiteTarget?,
|
override val useSiteTarget: AnnotationUseSiteTarget?,
|
||||||
override var annotationTypeRef: FirTypeRef
|
override var annotationTypeRef: FirTypeRef
|
||||||
) : FirAbstractCall(session, psi), FirAnnotationCall {
|
) : FirAnnotationCall(session, psi) {
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
annotationTypeRef = annotationTypeRef.transformSingle(transformer, data)
|
annotationTypeRef = annotationTypeRef.transformSingle(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractCall>.transformChildren(transformer, data)
|
return super.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -12,4 +12,4 @@ import org.jetbrains.kotlin.fir.expressions.FirArrayOfCall
|
|||||||
class FirArrayOfCallImpl(
|
class FirArrayOfCallImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractCall(session, psi), FirArrayOfCall
|
) : FirArrayOfCall(session, psi)
|
||||||
+28
-16
@@ -6,22 +6,30 @@
|
|||||||
package org.jetbrains.kotlin.fir.expressions.impl
|
package org.jetbrains.kotlin.fir.expressions.impl
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.*
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.transformInplace
|
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
|
||||||
|
|
||||||
class FirArraySetCallImpl(
|
class FirArraySetCallImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
value: FirExpression,
|
override var rValue: FirExpression,
|
||||||
operation: FirOperation
|
override val operation: FirOperation
|
||||||
) : FirAbstractAssignment(session, psi, value, operation, false), FirArraySetCall {
|
) : FirArraySetCall(session, psi), FirModifiableQualifiedAccess<FirReference> {
|
||||||
|
override lateinit var calleeReference: FirReference
|
||||||
|
|
||||||
|
override var lValue: FirReference
|
||||||
|
get() = calleeReference
|
||||||
|
set(value) {
|
||||||
|
calleeReference = value
|
||||||
|
}
|
||||||
|
|
||||||
|
override var explicitReceiver: FirExpression?
|
||||||
|
get() = null
|
||||||
|
set(_) {}
|
||||||
|
|
||||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(session, null)
|
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(session, null)
|
||||||
|
|
||||||
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
||||||
@@ -30,14 +38,9 @@ class FirArraySetCallImpl(
|
|||||||
|
|
||||||
override val indexes = mutableListOf<FirExpression>()
|
override val indexes = mutableListOf<FirExpression>()
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <D> transformRValue(transformer: FirTransformer<D>, data: D): FirAssignment {
|
||||||
super<FirArraySetCall>.accept(visitor, data)
|
rValue = rValue.transformSingle(transformer, data)
|
||||||
|
return this
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
|
||||||
typeRef = typeRef.transformSingle(transformer, data)
|
|
||||||
indexes.transformInplace(transformer, data)
|
|
||||||
|
|
||||||
return super<FirAbstractAssignment>.transformChildren(transformer, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformArguments(transformer: FirTransformer<D>, data: D): FirCall {
|
override fun <D> transformArguments(transformer: FirTransformer<D>, data: D): FirCall {
|
||||||
@@ -45,4 +48,13 @@ class FirArraySetCallImpl(
|
|||||||
indexes.transformInplace(transformer, data)
|
indexes.transformInplace(transformer, data)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
|
calleeReference = calleeReference.transformSingle(transformer, data)
|
||||||
|
rValue = rValue.transformSingle(transformer, data)
|
||||||
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
|
indexes.transformInplace(transformer, data)
|
||||||
|
|
||||||
|
return super<FirArraySetCall>.transformChildren(transformer, data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -16,11 +16,11 @@ import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
|||||||
class FirBlockImpl(
|
class FirBlockImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractBlock(session, psi), FirBlock {
|
) : FirBlock(session, psi) {
|
||||||
override val statements = mutableListOf<FirStatement>()
|
override val statements = mutableListOf<FirStatement>()
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
statements.transformInplace(transformer, data)
|
statements.transformInplace(transformer, data)
|
||||||
return super<FirAbstractBlock>.transformChildren(transformer, data)
|
return super.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -12,4 +12,4 @@ import org.jetbrains.kotlin.fir.expressions.FirBreakExpression
|
|||||||
class FirBreakExpressionImpl(
|
class FirBreakExpressionImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractLoopJump(session, psi), FirBreakExpression
|
) : FirBreakExpression(session, psi)
|
||||||
+9
-6
@@ -1,29 +1,32 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* 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
|
package org.jetbrains.kotlin.fir.expressions.impl
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirCall
|
import org.jetbrains.kotlin.fir.expressions.FirCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
|
import org.jetbrains.kotlin.fir.transformInplace
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
abstract class FirAbstractCall(
|
abstract class FirCallWithArgumentList(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractExpression(session, psi), FirCall {
|
) : FirCall(session, psi) {
|
||||||
final override val arguments = mutableListOf<FirExpression>()
|
override val arguments = mutableListOf<FirExpression>()
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
arguments.transformInplace(transformer, data)
|
arguments.transformInplace(transformer, data)
|
||||||
return super<FirAbstractExpression>.transformChildren(transformer, data)
|
return super.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformArguments(transformer: FirTransformer<D>, data: D): FirCall {
|
override fun <D> transformArguments(transformer: FirTransformer<D>, data: D): FirCall {
|
||||||
arguments.transformInplace(transformer, data)
|
arguments.transformInplace(transformer, data)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+8
-9
@@ -7,26 +7,25 @@ package org.jetbrains.kotlin.fir.expressions.impl
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirReference
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
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.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirCallableReferenceAccessImpl(
|
class FirCallableReferenceAccessImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractQualifiedAccess(session, psi), FirCallableReferenceAccess {
|
) : FirCallableReferenceAccess(session, psi), FirModifiableQualifiedAccess<FirReference> {
|
||||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(session, null)
|
override lateinit var calleeReference: FirReference
|
||||||
|
|
||||||
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
override var explicitReceiver: FirExpression? = null
|
||||||
typeRef = newTypeRef
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
typeRef = typeRef.transformSingle(transformer, data)
|
calleeReference = calleeReference.transformSingle(transformer, data)
|
||||||
|
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractQualifiedAccess>.transformChildren(transformer, data)
|
return super<FirCallableReferenceAccess>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -17,9 +17,9 @@ class FirClassReferenceExpressionImpl(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override var classTypeRef: FirTypeRef
|
override var classTypeRef: FirTypeRef
|
||||||
) : FirAbstractExpression(session, psi), FirClassReferenceExpression {
|
) : FirClassReferenceExpression(session, psi) {
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
classTypeRef = classTypeRef.transformSingle(transformer, data)
|
classTypeRef = classTypeRef.transformSingle(transformer, data)
|
||||||
return super<FirAbstractExpression>.transformChildren(transformer, data)
|
return super.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -15,7 +15,7 @@ class FirConstExpressionImpl<T>(
|
|||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override val kind: IrConstKind<T>,
|
override val kind: IrConstKind<T>,
|
||||||
override val value: T
|
override val value: T
|
||||||
) : FirAbstractExpression(session, psi), FirConstExpression<T>
|
) : FirConstExpression<T>(session, psi)
|
||||||
|
|
||||||
fun <T> FirConstExpressionImpl(session: FirSession, psi: PsiElement?, kind: IrConstKind<T>, value: T?, errorReason: String) =
|
fun <T> FirConstExpressionImpl(session: FirSession, psi: PsiElement?, kind: IrConstKind<T>, value: T?, errorReason: String) =
|
||||||
value?.let { FirConstExpressionImpl(session, psi, kind, it) } ?: FirErrorExpressionImpl(session, psi, errorReason)
|
value?.let { FirConstExpressionImpl(session, psi, kind, it) } ?: FirErrorExpressionImpl(session, psi, errorReason)
|
||||||
+1
-1
@@ -12,4 +12,4 @@ import org.jetbrains.kotlin.fir.expressions.FirContinueExpression
|
|||||||
class FirContinueExpressionImpl(
|
class FirContinueExpressionImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractLoopJump(session, psi), FirContinueExpression
|
) : FirContinueExpression(session, psi)
|
||||||
+5
-2
@@ -23,7 +23,7 @@ class FirDelegatedConstructorCallImpl(
|
|||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override var constructedTypeRef: FirTypeRef,
|
override var constructedTypeRef: FirTypeRef,
|
||||||
override val isThis: Boolean
|
override val isThis: Boolean
|
||||||
) : FirAbstractCall(session, psi), FirDelegatedConstructorCall {
|
) : FirDelegatedConstructorCall(session, psi) {
|
||||||
override var calleeReference: FirReference =
|
override var calleeReference: FirReference =
|
||||||
if (isThis) FirExplicitThisReference(session, psi, null) else FirExplicitSuperReference(session, psi, constructedTypeRef)
|
if (isThis) FirExplicitThisReference(session, psi, null) else FirExplicitSuperReference(session, psi, constructedTypeRef)
|
||||||
|
|
||||||
@@ -35,8 +35,9 @@ class FirDelegatedConstructorCallImpl(
|
|||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
constructedTypeRef = constructedTypeRef.transformSingle(transformer, data)
|
constructedTypeRef = constructedTypeRef.transformSingle(transformer, data)
|
||||||
calleeReference = calleeReference.transformSingle(transformer, data)
|
calleeReference = calleeReference.transformSingle(transformer, data)
|
||||||
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractCall>.transformChildren(transformer, data)
|
return super.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess {
|
override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess {
|
||||||
@@ -44,4 +45,6 @@ class FirDelegatedConstructorCallImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override var typeRef: FirTypeRef = FirImplicitUnitTypeRef(session, psi)
|
override var typeRef: FirTypeRef = FirImplicitUnitTypeRef(session, psi)
|
||||||
|
|
||||||
|
override fun replaceTypeRef(newTypeRef: FirTypeRef) {}
|
||||||
}
|
}
|
||||||
+12
-1
@@ -6,15 +6,26 @@
|
|||||||
package org.jetbrains.kotlin.fir.expressions.impl
|
package org.jetbrains.kotlin.fir.expressions.impl
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
// Representation of "dummy" condition at else branch
|
// Representation of "dummy" condition at else branch
|
||||||
class FirElseIfTrueCondition(
|
class FirElseIfTrueCondition(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractExpression(session, psi) {
|
) : FirExpression(session, psi) {
|
||||||
|
|
||||||
override var typeRef: FirTypeRef = FirImplicitUnitTypeRef(session, psi)
|
override var typeRef: FirTypeRef = FirImplicitUnitTypeRef(session, psi)
|
||||||
|
|
||||||
|
override fun replaceTypeRef(newTypeRef: FirTypeRef) {}
|
||||||
|
|
||||||
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
|
return super.transformChildren(transformer, data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -11,6 +11,6 @@ import org.jetbrains.kotlin.fir.expressions.FirStatement
|
|||||||
|
|
||||||
class FirEmptyExpressionBlock(
|
class FirEmptyExpressionBlock(
|
||||||
session: FirSession
|
session: FirSession
|
||||||
) : FirAbstractBlock(session, null), FirBlock {
|
) : FirBlock(session, null) {
|
||||||
override val statements: List<FirStatement> = listOf()
|
override val statements: List<FirStatement> = listOf()
|
||||||
}
|
}
|
||||||
+1
-1
@@ -13,4 +13,4 @@ class FirErrorExpressionImpl(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override val reason: String
|
override val reason: String
|
||||||
) : FirAbstractExpression(session, psi), FirErrorExpression
|
) : FirErrorExpression(session, psi)
|
||||||
+1
-2
@@ -7,9 +7,8 @@ package org.jetbrains.kotlin.fir.expressions.impl
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
|
||||||
|
|
||||||
class FirExpressionStub(
|
class FirExpressionStub(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractExpression(session, psi)
|
) : FirUnknownTypeExpression(session, psi)
|
||||||
+1
-2
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.expressions.impl
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirCall
|
|
||||||
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.FirQualifiedAccess
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
||||||
@@ -18,7 +17,7 @@ class FirFunctionCallImpl(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override var safe: Boolean = false
|
override var safe: Boolean = false
|
||||||
) : FirFunctionCall(session, psi), FirModifiableQualifiedAccess {
|
) : FirFunctionCall(session, psi), FirModifiableQualifiedAccess<FirNamedReference> {
|
||||||
override val typeArguments = mutableListOf<FirTypeProjection>()
|
override val typeArguments = mutableListOf<FirTypeProjection>()
|
||||||
|
|
||||||
override lateinit var calleeReference: FirNamedReference
|
override lateinit var calleeReference: FirNamedReference
|
||||||
|
|||||||
+1
-1
@@ -12,4 +12,4 @@ import org.jetbrains.kotlin.fir.expressions.FirGetClassCall
|
|||||||
class FirGetClassCallImpl(
|
class FirGetClassCallImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractCall(session, psi), FirGetClassCall
|
) : FirGetClassCall(session, psi)
|
||||||
+12
-2
@@ -6,18 +6,28 @@
|
|||||||
package org.jetbrains.kotlin.fir.expressions.impl
|
package org.jetbrains.kotlin.fir.expressions.impl
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.FirTarget
|
import org.jetbrains.kotlin.fir.FirTarget
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirJump
|
import org.jetbrains.kotlin.fir.expressions.FirJump
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirLoop
|
import org.jetbrains.kotlin.fir.expressions.FirLoop
|
||||||
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitNothingTypeRef
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitNothingTypeRef
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
abstract class FirAbstractLoopJump(
|
abstract class FirLoopJump(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractExpression(session, psi), FirJump<FirLoop> {
|
) : FirJump<FirLoop>(session, psi) {
|
||||||
override lateinit var target: FirTarget<FirLoop>
|
override lateinit var target: FirTarget<FirLoop>
|
||||||
|
|
||||||
override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(session, psi)
|
override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(session, psi)
|
||||||
|
|
||||||
|
override fun replaceTypeRef(newTypeRef: FirTypeRef) {}
|
||||||
|
|
||||||
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
|
return super.transformChildren(transformer, data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+17
-4
@@ -5,15 +5,28 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions.impl
|
package org.jetbrains.kotlin.fir.expressions.impl
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.FirReference
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
||||||
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
|
interface FirModifiableQualifiedAccess<C : FirReference> : FirQualifiedAccess {
|
||||||
|
override var calleeReference: C
|
||||||
|
|
||||||
interface FirModifiableQualifiedAccess : FirQualifiedAccess {
|
|
||||||
override var safe: Boolean
|
override var safe: Boolean
|
||||||
get() = super.safe
|
get() = false
|
||||||
set(_) {}
|
set(_) {}
|
||||||
|
|
||||||
override var explicitReceiver: FirExpression?
|
override var explicitReceiver: FirExpression?
|
||||||
get() = super.explicitReceiver
|
|
||||||
set(_) {}
|
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirQualifiedAccess {
|
||||||
|
calleeReference = calleeReference.transformSingle(transformer, data)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirQualifiedAccess {
|
||||||
|
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||||
|
return this
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+16
-3
@@ -6,20 +6,33 @@
|
|||||||
package org.jetbrains.kotlin.fir.expressions.impl
|
package org.jetbrains.kotlin.fir.expressions.impl
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirOperation
|
import org.jetbrains.kotlin.fir.expressions.FirOperation
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirOperatorCall
|
||||||
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitBooleanTypeRef
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitBooleanTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
abstract class FirAbstractOperationBasedCall(
|
abstract class FirOperationBasedCall(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
val operation: FirOperation
|
final override val operation: FirOperation
|
||||||
) : FirAbstractCall(session, psi) {
|
) : FirOperatorCall(session, psi) {
|
||||||
override var typeRef: FirTypeRef = if (operation in FirOperation.BOOLEANS) {
|
override var typeRef: FirTypeRef = if (operation in FirOperation.BOOLEANS) {
|
||||||
FirImplicitBooleanTypeRef(session, null)
|
FirImplicitBooleanTypeRef(session, null)
|
||||||
} else {
|
} else {
|
||||||
FirImplicitTypeRefImpl(session, null)
|
FirImplicitTypeRefImpl(session, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
||||||
|
typeRef = newTypeRef
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
|
return super.transformChildren(transformer, data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+1
-2
@@ -8,10 +8,9 @@ package org.jetbrains.kotlin.fir.expressions.impl
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirOperation
|
import org.jetbrains.kotlin.fir.expressions.FirOperation
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirOperatorCall
|
|
||||||
|
|
||||||
class FirOperatorCallImpl(
|
class FirOperatorCallImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
operation: FirOperation
|
operation: FirOperation
|
||||||
) : FirAbstractOperationBasedCall(session, psi, operation), FirOperatorCall
|
) : FirOperationBasedCall(session, psi, operation)
|
||||||
+9
-10
@@ -7,27 +7,26 @@ package org.jetbrains.kotlin.fir.expressions.impl
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirReference
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
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.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirQualifiedAccessExpressionImpl(
|
class FirQualifiedAccessExpressionImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
safe: Boolean = false
|
override var safe: Boolean = false
|
||||||
) : FirAbstractQualifiedAccess(session, psi, safe), FirQualifiedAccessExpression {
|
) : FirModifiableQualifiedAccess<FirReference>, FirQualifiedAccessExpression(session, psi) {
|
||||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(session, null)
|
override lateinit var calleeReference: FirReference
|
||||||
|
|
||||||
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
override var explicitReceiver: FirExpression? = null
|
||||||
typeRef = newTypeRef
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
typeRef = typeRef.transformSingle(transformer, data)
|
calleeReference = calleeReference.transformSingle(transformer, data)
|
||||||
|
explicitReceiver = explicitReceiver?.transformSingle(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractQualifiedAccess>.transformChildren(transformer, data)
|
return super<FirQualifiedAccessExpression>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -16,7 +16,7 @@ class FirResolvedQualifierImpl(
|
|||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override val packageFqName: FqName,
|
override val packageFqName: FqName,
|
||||||
override val relativeClassFqName: FqName?
|
override val relativeClassFqName: FqName?
|
||||||
) : FirResolvedQualifier, FirAbstractExpression(session, psi) {
|
) : FirResolvedQualifier(session, psi) {
|
||||||
constructor(session: FirSession, psi: PsiElement?, classId: ClassId) : this(
|
constructor(session: FirSession, psi: PsiElement?, classId: ClassId) : this(
|
||||||
session,
|
session,
|
||||||
psi,
|
psi,
|
||||||
|
|||||||
+5
-3
@@ -12,20 +12,22 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
|
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitNothingTypeRef
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitNothingTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirReturnExpressionImpl(
|
class FirReturnExpressionImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override var result: FirExpression
|
override var result: FirExpression
|
||||||
) : FirAbstractExpression(session, psi), FirReturnExpression {
|
) : FirReturnExpression(session, psi) {
|
||||||
override lateinit var target: FirTarget<FirFunction>
|
override lateinit var target: FirTarget<FirFunction>
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
result = result.transformSingle(transformer, data)
|
result = result.transformSingle(transformer, data)
|
||||||
return super<FirAbstractExpression>.transformChildren(transformer, data)
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
|
return super.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(session, psi)
|
override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(session, psi)
|
||||||
|
|
||||||
|
override fun replaceTypeRef(newTypeRef: FirTypeRef) {}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -15,12 +15,12 @@ import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
|||||||
class FirSingleExpressionBlock(
|
class FirSingleExpressionBlock(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
private var statement: FirStatement
|
private var statement: FirStatement
|
||||||
) : FirAbstractBlock(session, statement.psi), FirBlock {
|
) : FirBlock(session, statement.psi) {
|
||||||
override val statements
|
override val statements
|
||||||
get() = listOf(statement)
|
get() = listOf(statement)
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
statement = statement.transformSingle(transformer, data)
|
statement = statement.transformSingle(transformer, data)
|
||||||
return super<FirAbstractBlock>.transformChildren(transformer, data)
|
return super.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+11
-1
@@ -6,14 +6,24 @@
|
|||||||
package org.jetbrains.kotlin.fir.expressions.impl
|
package org.jetbrains.kotlin.fir.expressions.impl
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirStringConcatenationCall
|
import org.jetbrains.kotlin.fir.expressions.FirStringConcatenationCall
|
||||||
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitStringTypeRef
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitStringTypeRef
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirStringConcatenationCallImpl(
|
class FirStringConcatenationCallImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractCall(session, psi), FirStringConcatenationCall {
|
) : FirStringConcatenationCall(session, psi) {
|
||||||
|
override fun replaceTypeRef(newTypeRef: FirTypeRef) {}
|
||||||
|
|
||||||
override var typeRef: FirTypeRef = FirImplicitStringTypeRef(session, psi)
|
override var typeRef: FirTypeRef = FirImplicitStringTypeRef(session, psi)
|
||||||
|
|
||||||
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
|
return super.transformChildren(transformer, data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+5
-3
@@ -6,7 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.fir.expressions.impl
|
package org.jetbrains.kotlin.fir.expressions.impl
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirAbstractElement
|
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
@@ -20,10 +19,13 @@ class FirThrowExpressionImpl(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override var exception: FirExpression
|
override var exception: FirExpression
|
||||||
) : FirAbstractExpression(session, psi), FirThrowExpression {
|
) : FirThrowExpression(session, psi) {
|
||||||
|
override fun replaceTypeRef(newTypeRef: FirTypeRef) {}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
exception = exception.transformSingle(transformer, data)
|
exception = exception.transformSingle(transformer, data)
|
||||||
return super<FirAbstractExpression>.transformChildren(transformer, data)
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
|
return super.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(session, psi)
|
override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(session, psi)
|
||||||
|
|||||||
+6
-3
@@ -6,10 +6,13 @@
|
|||||||
package org.jetbrains.kotlin.fir.expressions.impl
|
package org.jetbrains.kotlin.fir.expressions.impl
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirCatch
|
import org.jetbrains.kotlin.fir.expressions.FirCatch
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirTryExpression
|
import org.jetbrains.kotlin.fir.expressions.FirTryExpression
|
||||||
|
import org.jetbrains.kotlin.fir.transformInplace
|
||||||
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirTryExpressionImpl(
|
class FirTryExpressionImpl(
|
||||||
@@ -17,13 +20,13 @@ class FirTryExpressionImpl(
|
|||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override var tryBlock: FirBlock,
|
override var tryBlock: FirBlock,
|
||||||
override var finallyBlock: FirBlock?
|
override var finallyBlock: FirBlock?
|
||||||
) : FirAbstractExpression(session, psi), FirTryExpression {
|
) : FirTryExpression(session, psi) {
|
||||||
override val catches = mutableListOf<FirCatch>()
|
override val catches = mutableListOf<FirCatch>()
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
tryBlock = tryBlock.transformSingle(transformer, data)
|
tryBlock = tryBlock.transformSingle(transformer, data)
|
||||||
finallyBlock = finallyBlock?.transformSingle(transformer, data)
|
finallyBlock = finallyBlock?.transformSingle(transformer, data)
|
||||||
catches.transformInplace(transformer, data)
|
catches.transformInplace(transformer, data)
|
||||||
return super<FirAbstractExpression>.transformChildren(transformer, data)
|
return super.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -19,9 +19,9 @@ class FirTypeOperatorCallImpl(
|
|||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
operation: FirOperation,
|
operation: FirOperation,
|
||||||
override var conversionTypeRef: FirTypeRef
|
override var conversionTypeRef: FirTypeRef
|
||||||
) : FirAbstractOperationBasedCall(session, psi, operation), FirTypeOperatorCall {
|
) : FirTypeOperatorCall(session, psi, operation) {
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
conversionTypeRef = conversionTypeRef.transformSingle(transformer, data)
|
conversionTypeRef = conversionTypeRef.transformSingle(transformer, data)
|
||||||
return super<FirAbstractOperationBasedCall>.transformChildren(transformer, data)
|
return super.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-3
@@ -9,14 +9,12 @@ import com.intellij.psi.PsiElement
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirUncheckedNotNullCast
|
import org.jetbrains.kotlin.fir.expressions.FirUncheckedNotNullCast
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirOperation
|
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
|
||||||
|
|
||||||
class FirUncheckedNotNullCastImpl(
|
class FirUncheckedNotNullCastImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
expression: FirExpression
|
expression: FirExpression
|
||||||
) : FirAbstractCall(session, psi), FirUncheckedNotNullCast {
|
) : FirUncheckedNotNullCast(session, psi) {
|
||||||
init {
|
init {
|
||||||
arguments += expression
|
arguments += expression
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-1
@@ -6,13 +6,24 @@
|
|||||||
package org.jetbrains.kotlin.fir.expressions.impl
|
package org.jetbrains.kotlin.fir.expressions.impl
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirUnitExpression(
|
class FirUnitExpression(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractExpression(session, psi) {
|
) : FirExpression(session, psi) {
|
||||||
|
override fun replaceTypeRef(newTypeRef: FirTypeRef) {}
|
||||||
|
|
||||||
override var typeRef: FirTypeRef = FirImplicitUnitTypeRef(session, psi)
|
override var typeRef: FirTypeRef = FirImplicitUnitTypeRef(session, psi)
|
||||||
|
|
||||||
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
|
return super.transformChildren(transformer, data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+3
-4
@@ -8,16 +8,15 @@ package org.jetbrains.kotlin.fir.expressions.impl
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
abstract class FirAbstractBlock(
|
abstract class FirUnknownTypeCallWithArgumentList(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractAnnotatedElement(session, psi), FirBlock {
|
) : FirCallWithArgumentList(session, psi) {
|
||||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(session, null)
|
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(session, null)
|
||||||
|
|
||||||
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
||||||
@@ -27,6 +26,6 @@ abstract class FirAbstractBlock(
|
|||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
typeRef = typeRef.transformSingle(transformer, data)
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractAnnotatedElement>.transformChildren(transformer, data)
|
return super.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+5
-6
@@ -10,24 +10,23 @@ import org.jetbrains.kotlin.fir.FirElement
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
abstract class FirAbstractExpression(
|
abstract class FirUnknownTypeExpression(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractStatement(session, psi), FirExpression {
|
) : FirExpression(session, psi) {
|
||||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(session, null)
|
final override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(session, null)
|
||||||
|
|
||||||
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
final override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
||||||
typeRef = newTypeRef
|
typeRef = newTypeRef
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
typeRef = typeRef.transformSingle(transformer, data)
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractStatement>.transformChildren(transformer, data)
|
return super.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -18,7 +18,7 @@ class FirWhenExpressionImpl(
|
|||||||
psiElement: PsiElement?,
|
psiElement: PsiElement?,
|
||||||
override var subject: FirExpression? = null,
|
override var subject: FirExpression? = null,
|
||||||
override var subjectVariable: FirVariable? = null
|
override var subjectVariable: FirVariable? = null
|
||||||
) : FirAbstractExpression(session, psiElement), FirWhenExpression {
|
) : FirWhenExpression(session, psiElement) {
|
||||||
override val branches = mutableListOf<FirWhenBranch>()
|
override val branches = mutableListOf<FirWhenBranch>()
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
@@ -28,6 +28,6 @@ class FirWhenExpressionImpl(
|
|||||||
subject = subject?.transformSingle(transformer, data)
|
subject = subject?.transformSingle(transformer, data)
|
||||||
}
|
}
|
||||||
branches.transformInplace(transformer, data)
|
branches.transformInplace(transformer, data)
|
||||||
return super<FirAbstractExpression>.transformChildren(transformer, data)
|
return super.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -14,4 +14,4 @@ class FirWhenSubjectExpressionImpl(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override val whenSubject: FirWhenSubject
|
override val whenSubject: FirWhenSubject
|
||||||
) : FirAbstractExpression(session, psi), FirWhenSubjectExpression
|
) : FirWhenSubjectExpression(session, psi)
|
||||||
+122
-74
@@ -172,52 +172,60 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformElement(statement, data)
|
return transformElement(statement, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformClass(klass: FirClass, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformAnnotatedStatement(annotatedStatement: FirAnnotatedStatement, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformStatement(klass, data)
|
return transformStatement(annotatedStatement, data)
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformAnonymousObject(anonymousObject: FirAnonymousObject, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformClass(anonymousObject, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformModifiableClass(modifiableClass: FirModifiableClass, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformClass(modifiableClass, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformErrorStatement(errorStatement: FirErrorStatement, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformStatement(errorStatement, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformExpression(expression: FirExpression, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformExpression(expression: FirExpression, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformStatement(expression, data)
|
return transformAnnotatedStatement(expression, data)
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformBlock(block: FirBlock, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformExpression(block, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformCall(call: FirCall, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformCall(call: FirCall, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformExpression(call, data)
|
return transformExpression(call, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformAnnotationCall(annotationCall: FirAnnotationCall, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformCall(annotationCall, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformArrayOfCall(arrayOfCall: FirArrayOfCall, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformCall(arrayOfCall, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformArraySetCall(arraySetCall: FirArraySetCall, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformArraySetCall(arraySetCall: FirArraySetCall, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformCall(arraySetCall, data)
|
return transformCall(arraySetCall, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun transformCallWithArgumentList(callWithArgumentList: FirCallWithArgumentList, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformCall(callWithArgumentList, data)
|
||||||
|
}
|
||||||
|
|
||||||
open fun transformDelegatedConstructorCall(delegatedConstructorCall: FirDelegatedConstructorCall, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformDelegatedConstructorCall(delegatedConstructorCall: FirDelegatedConstructorCall, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformCall(delegatedConstructorCall, data)
|
return transformCallWithArgumentList(delegatedConstructorCall, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformOperatorCall(operatorCall: FirOperatorCall, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformCallWithArgumentList(operatorCall, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformOperationBasedCall(operationBasedCall: FirOperationBasedCall, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformOperatorCall(operationBasedCall, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformTypeOperatorCall(typeOperatorCall: FirTypeOperatorCall, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformOperationBasedCall(typeOperatorCall, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformStringConcatenationCall(stringConcatenationCall: FirStringConcatenationCall, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformCallWithArgumentList(stringConcatenationCall, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformUnknownTypeCallWithArgumentList(unknownTypeCallWithArgumentList: FirUnknownTypeCallWithArgumentList, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformCallWithArgumentList(unknownTypeCallWithArgumentList, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformAnnotationCall(annotationCall: FirAnnotationCall, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformUnknownTypeCallWithArgumentList(annotationCall, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformArrayOfCall(arrayOfCall: FirArrayOfCall, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformUnknownTypeCallWithArgumentList(arrayOfCall, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformFunctionCall(functionCall: FirFunctionCall, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformFunctionCall(functionCall: FirFunctionCall, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformCall(functionCall, data)
|
return transformUnknownTypeCallWithArgumentList(functionCall, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformComponentCall(componentCall: FirComponentCall, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformComponentCall(componentCall: FirComponentCall, data: D): CompositeTransformResult<FirStatement> {
|
||||||
@@ -225,71 +233,79 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
}
|
}
|
||||||
|
|
||||||
open fun transformGetClassCall(getClassCall: FirGetClassCall, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformGetClassCall(getClassCall: FirGetClassCall, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformCall(getClassCall, data)
|
return transformUnknownTypeCallWithArgumentList(getClassCall, data)
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformOperatorCall(operatorCall: FirOperatorCall, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformCall(operatorCall, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformTypeOperatorCall(typeOperatorCall: FirTypeOperatorCall, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformOperatorCall(typeOperatorCall, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformStringConcatenationCall(stringConcatenationCall: FirStringConcatenationCall, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformCall(stringConcatenationCall, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformUncheckedNotNullCast(uncheckedNotNullCast: FirUncheckedNotNullCast, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformUncheckedNotNullCast(uncheckedNotNullCast: FirUncheckedNotNullCast, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformCall(uncheckedNotNullCast, data)
|
return transformUnknownTypeCallWithArgumentList(uncheckedNotNullCast, data)
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformExpression(classReferenceExpression, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun <T> transformConstExpression(constExpression: FirConstExpression<T>, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformExpression(constExpression, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformErrorExpression(errorExpression: FirErrorExpression, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformExpression(errorExpression, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun <E : FirTargetElement> transformJump(jump: FirJump<E>, data: D): CompositeTransformResult<FirStatement> {
|
open fun <E : FirTargetElement> transformJump(jump: FirJump<E>, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformExpression(jump, data)
|
return transformExpression(jump, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun transformLoopJump(loopJump: FirLoopJump, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformJump(loopJump, data)
|
||||||
|
}
|
||||||
|
|
||||||
open fun transformBreakExpression(breakExpression: FirBreakExpression, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformBreakExpression(breakExpression: FirBreakExpression, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformJump(breakExpression, data)
|
return transformLoopJump(breakExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformContinueExpression(continueExpression: FirContinueExpression, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformContinueExpression(continueExpression: FirContinueExpression, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformJump(continueExpression, data)
|
return transformLoopJump(continueExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformReturnExpression(returnExpression: FirReturnExpression, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformReturnExpression(returnExpression: FirReturnExpression, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformJump(returnExpression, data)
|
return transformJump(returnExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformResolvedQualifier(resolvedQualifier: FirResolvedQualifier, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformExpression(resolvedQualifier, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformThrowExpression(throwExpression: FirThrowExpression, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformThrowExpression(throwExpression: FirThrowExpression, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformExpression(throwExpression, data)
|
return transformExpression(throwExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun transformUnknownTypeExpression(unknownTypeExpression: FirUnknownTypeExpression, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformExpression(unknownTypeExpression, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformBlock(block: FirBlock, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformUnknownTypeExpression(block, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformUnknownTypeExpression(classReferenceExpression, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun <T> transformConstExpression(constExpression: FirConstExpression<T>, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformUnknownTypeExpression(constExpression, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformErrorExpression(errorExpression: FirErrorExpression, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformUnknownTypeExpression(errorExpression, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformUnknownTypeExpression(qualifiedAccessExpression, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformQualifiedAccessExpression(callableReferenceAccess, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformResolvedQualifier(resolvedQualifier: FirResolvedQualifier, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformUnknownTypeExpression(resolvedQualifier, data)
|
||||||
|
}
|
||||||
|
|
||||||
open fun transformTryExpression(tryExpression: FirTryExpression, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformTryExpression(tryExpression: FirTryExpression, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformExpression(tryExpression, data)
|
return transformUnknownTypeExpression(tryExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformWhenExpression(whenExpression: FirWhenExpression, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformWhenExpression(whenExpression: FirWhenExpression, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformExpression(whenExpression, data)
|
return transformUnknownTypeExpression(whenExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformWhenSubjectExpression(whenSubjectExpression: FirWhenSubjectExpression, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformWhenSubjectExpression(whenSubjectExpression: FirWhenSubjectExpression, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformExpression(whenSubjectExpression, data)
|
return transformUnknownTypeExpression(whenSubjectExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformWrappedArgumentExpression(wrappedArgumentExpression: FirWrappedArgumentExpression, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformWrappedArgumentExpression(wrappedArgumentExpression: FirWrappedArgumentExpression, data: D): CompositeTransformResult<FirStatement> {
|
||||||
@@ -308,6 +324,22 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformWrappedArgumentExpression(spreadArgumentExpression, data)
|
return transformWrappedArgumentExpression(spreadArgumentExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun transformClass(klass: FirClass, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformStatement(klass, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformAnonymousObject(anonymousObject: FirAnonymousObject, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformClass(anonymousObject, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformModifiableClass(modifiableClass: FirModifiableClass, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformClass(modifiableClass, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformErrorStatement(errorStatement: FirErrorStatement, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformStatement(errorStatement, data)
|
||||||
|
}
|
||||||
|
|
||||||
open fun transformLoop(loop: FirLoop, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformLoop(loop: FirLoop, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformStatement(loop, data)
|
return transformStatement(loop, data)
|
||||||
}
|
}
|
||||||
@@ -332,18 +364,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformAssignment(variableAssignment, data)
|
return transformAssignment(variableAssignment, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformModifiableQualifiedAccess(modifiableQualifiedAccess: FirModifiableQualifiedAccess, data: D): CompositeTransformResult<FirStatement> {
|
open fun <C : FirReference> transformModifiableQualifiedAccess(modifiableQualifiedAccess: FirModifiableQualifiedAccess<C>, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformQualifiedAccess(modifiableQualifiedAccess, data)
|
return transformQualifiedAccess(modifiableQualifiedAccess, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformQualifiedAccess(qualifiedAccessExpression, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess, data: D): CompositeTransformResult<FirStatement> {
|
|
||||||
return transformQualifiedAccessExpression(callableReferenceAccess, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun <E : FirElement> transformTargetElement(targetElement: E, data: D): CompositeTransformResult<E> {
|
open fun <E : FirElement> transformTargetElement(targetElement: E, data: D): CompositeTransformResult<E> {
|
||||||
return transformElement(targetElement, data)
|
return transformElement(targetElement, data)
|
||||||
}
|
}
|
||||||
@@ -408,6 +432,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformElement(whenBranch, data)
|
return transformElement(whenBranch, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitAnnotatedStatement(annotatedStatement: FirAnnotatedStatement, data: D): CompositeTransformResult<FirElement> {
|
||||||
|
return transformAnnotatedStatement(annotatedStatement, data)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformAnnotationCall(annotationCall, data)
|
return transformAnnotationCall(annotationCall, data)
|
||||||
}
|
}
|
||||||
@@ -448,6 +476,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformCall(call, data)
|
return transformCall(call, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitCallWithArgumentList(callWithArgumentList: FirCallWithArgumentList, data: D): CompositeTransformResult<FirElement> {
|
||||||
|
return transformCallWithArgumentList(callWithArgumentList, data)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformCallableDeclaration(callableDeclaration, data)
|
return transformCallableDeclaration(callableDeclaration, data)
|
||||||
}
|
}
|
||||||
@@ -600,6 +632,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformLoop(loop, data)
|
return transformLoop(loop, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitLoopJump(loopJump: FirLoopJump, data: D): CompositeTransformResult<FirElement> {
|
||||||
|
return transformLoopJump(loopJump, data)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformMemberDeclaration(memberDeclaration, data)
|
return transformMemberDeclaration(memberDeclaration, data)
|
||||||
}
|
}
|
||||||
@@ -612,7 +648,7 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformModifiableFunction(modifiableFunction, data)
|
return transformModifiableFunction(modifiableFunction, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitModifiableQualifiedAccess(modifiableQualifiedAccess: FirModifiableQualifiedAccess, data: D): CompositeTransformResult<FirElement> {
|
final override fun <C : FirReference> visitModifiableQualifiedAccess(modifiableQualifiedAccess: FirModifiableQualifiedAccess<C>, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformModifiableQualifiedAccess(modifiableQualifiedAccess, data)
|
return transformModifiableQualifiedAccess(modifiableQualifiedAccess, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -632,6 +668,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformNamedReference(namedReference, data)
|
return transformNamedReference(namedReference, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitOperationBasedCall(operationBasedCall: FirOperationBasedCall, data: D): CompositeTransformResult<FirElement> {
|
||||||
|
return transformOperationBasedCall(operationBasedCall, data)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitOperatorCall(operatorCall: FirOperatorCall, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitOperatorCall(operatorCall: FirOperatorCall, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformOperatorCall(operatorCall, data)
|
return transformOperatorCall(operatorCall, data)
|
||||||
}
|
}
|
||||||
@@ -764,6 +804,14 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformUncheckedNotNullCast(uncheckedNotNullCast, data)
|
return transformUncheckedNotNullCast(uncheckedNotNullCast, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitUnknownTypeCallWithArgumentList(unknownTypeCallWithArgumentList: FirUnknownTypeCallWithArgumentList, data: D): CompositeTransformResult<FirElement> {
|
||||||
|
return transformUnknownTypeCallWithArgumentList(unknownTypeCallWithArgumentList, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
final override fun visitUnknownTypeExpression(unknownTypeExpression: FirUnknownTypeExpression, data: D): CompositeTransformResult<FirElement> {
|
||||||
|
return transformUnknownTypeExpression(unknownTypeExpression, data)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitUserTypeRef(userTypeRef: FirUserTypeRef, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitUserTypeRef(userTypeRef: FirUserTypeRef, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformUserTypeRef(userTypeRef, data)
|
return transformUserTypeRef(userTypeRef, data)
|
||||||
}
|
}
|
||||||
|
|||||||
+97
-73
@@ -172,52 +172,60 @@ abstract class FirVisitor<out R, in D> {
|
|||||||
return visitElement(statement, data)
|
return visitElement(statement, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitClass(klass: FirClass, data: D): R {
|
open fun visitAnnotatedStatement(annotatedStatement: FirAnnotatedStatement, data: D): R {
|
||||||
return visitStatement(klass, data)
|
return visitStatement(annotatedStatement, data)
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitAnonymousObject(anonymousObject: FirAnonymousObject, data: D): R {
|
|
||||||
return visitClass(anonymousObject, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitModifiableClass(modifiableClass: FirModifiableClass, data: D): R {
|
|
||||||
return visitClass(modifiableClass, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitErrorStatement(errorStatement: FirErrorStatement, data: D): R {
|
|
||||||
return visitStatement(errorStatement, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitExpression(expression: FirExpression, data: D): R {
|
open fun visitExpression(expression: FirExpression, data: D): R {
|
||||||
return visitStatement(expression, data)
|
return visitAnnotatedStatement(expression, data)
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitBlock(block: FirBlock, data: D): R {
|
|
||||||
return visitExpression(block, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitCall(call: FirCall, data: D): R {
|
open fun visitCall(call: FirCall, data: D): R {
|
||||||
return visitExpression(call, data)
|
return visitExpression(call, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: D): R {
|
|
||||||
return visitCall(annotationCall, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitArrayOfCall(arrayOfCall: FirArrayOfCall, data: D): R {
|
|
||||||
return visitCall(arrayOfCall, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitArraySetCall(arraySetCall: FirArraySetCall, data: D): R {
|
open fun visitArraySetCall(arraySetCall: FirArraySetCall, data: D): R {
|
||||||
return visitCall(arraySetCall, data)
|
return visitCall(arraySetCall, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun visitCallWithArgumentList(callWithArgumentList: FirCallWithArgumentList, data: D): R {
|
||||||
|
return visitCall(callWithArgumentList, data)
|
||||||
|
}
|
||||||
|
|
||||||
open fun visitDelegatedConstructorCall(delegatedConstructorCall: FirDelegatedConstructorCall, data: D): R {
|
open fun visitDelegatedConstructorCall(delegatedConstructorCall: FirDelegatedConstructorCall, data: D): R {
|
||||||
return visitCall(delegatedConstructorCall, data)
|
return visitCallWithArgumentList(delegatedConstructorCall, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitOperatorCall(operatorCall: FirOperatorCall, data: D): R {
|
||||||
|
return visitCallWithArgumentList(operatorCall, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitOperationBasedCall(operationBasedCall: FirOperationBasedCall, data: D): R {
|
||||||
|
return visitOperatorCall(operationBasedCall, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitTypeOperatorCall(typeOperatorCall: FirTypeOperatorCall, data: D): R {
|
||||||
|
return visitOperationBasedCall(typeOperatorCall, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitStringConcatenationCall(stringConcatenationCall: FirStringConcatenationCall, data: D): R {
|
||||||
|
return visitCallWithArgumentList(stringConcatenationCall, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitUnknownTypeCallWithArgumentList(unknownTypeCallWithArgumentList: FirUnknownTypeCallWithArgumentList, data: D): R {
|
||||||
|
return visitCallWithArgumentList(unknownTypeCallWithArgumentList, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: D): R {
|
||||||
|
return visitUnknownTypeCallWithArgumentList(annotationCall, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitArrayOfCall(arrayOfCall: FirArrayOfCall, data: D): R {
|
||||||
|
return visitUnknownTypeCallWithArgumentList(arrayOfCall, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitFunctionCall(functionCall: FirFunctionCall, data: D): R {
|
open fun visitFunctionCall(functionCall: FirFunctionCall, data: D): R {
|
||||||
return visitCall(functionCall, data)
|
return visitUnknownTypeCallWithArgumentList(functionCall, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitComponentCall(componentCall: FirComponentCall, data: D): R {
|
open fun visitComponentCall(componentCall: FirComponentCall, data: D): R {
|
||||||
@@ -225,71 +233,79 @@ abstract class FirVisitor<out R, in D> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
open fun visitGetClassCall(getClassCall: FirGetClassCall, data: D): R {
|
open fun visitGetClassCall(getClassCall: FirGetClassCall, data: D): R {
|
||||||
return visitCall(getClassCall, data)
|
return visitUnknownTypeCallWithArgumentList(getClassCall, data)
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitOperatorCall(operatorCall: FirOperatorCall, data: D): R {
|
|
||||||
return visitCall(operatorCall, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitTypeOperatorCall(typeOperatorCall: FirTypeOperatorCall, data: D): R {
|
|
||||||
return visitOperatorCall(typeOperatorCall, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitStringConcatenationCall(stringConcatenationCall: FirStringConcatenationCall, data: D): R {
|
|
||||||
return visitCall(stringConcatenationCall, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitUncheckedNotNullCast(uncheckedNotNullCast: FirUncheckedNotNullCast, data: D): R {
|
open fun visitUncheckedNotNullCast(uncheckedNotNullCast: FirUncheckedNotNullCast, data: D): R {
|
||||||
return visitCall(uncheckedNotNullCast, data)
|
return visitUnknownTypeCallWithArgumentList(uncheckedNotNullCast, data)
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression, data: D): R {
|
|
||||||
return visitExpression(classReferenceExpression, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun <T> visitConstExpression(constExpression: FirConstExpression<T>, data: D): R {
|
|
||||||
return visitExpression(constExpression, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitErrorExpression(errorExpression: FirErrorExpression, data: D): R {
|
|
||||||
return visitExpression(errorExpression, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun <E : FirTargetElement> visitJump(jump: FirJump<E>, data: D): R {
|
open fun <E : FirTargetElement> visitJump(jump: FirJump<E>, data: D): R {
|
||||||
return visitExpression(jump, data)
|
return visitExpression(jump, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun visitLoopJump(loopJump: FirLoopJump, data: D): R {
|
||||||
|
return visitJump(loopJump, data)
|
||||||
|
}
|
||||||
|
|
||||||
open fun visitBreakExpression(breakExpression: FirBreakExpression, data: D): R {
|
open fun visitBreakExpression(breakExpression: FirBreakExpression, data: D): R {
|
||||||
return visitJump(breakExpression, data)
|
return visitLoopJump(breakExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitContinueExpression(continueExpression: FirContinueExpression, data: D): R {
|
open fun visitContinueExpression(continueExpression: FirContinueExpression, data: D): R {
|
||||||
return visitJump(continueExpression, data)
|
return visitLoopJump(continueExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitReturnExpression(returnExpression: FirReturnExpression, data: D): R {
|
open fun visitReturnExpression(returnExpression: FirReturnExpression, data: D): R {
|
||||||
return visitJump(returnExpression, data)
|
return visitJump(returnExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitResolvedQualifier(resolvedQualifier: FirResolvedQualifier, data: D): R {
|
|
||||||
return visitExpression(resolvedQualifier, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitThrowExpression(throwExpression: FirThrowExpression, data: D): R {
|
open fun visitThrowExpression(throwExpression: FirThrowExpression, data: D): R {
|
||||||
return visitExpression(throwExpression, data)
|
return visitExpression(throwExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun visitUnknownTypeExpression(unknownTypeExpression: FirUnknownTypeExpression, data: D): R {
|
||||||
|
return visitExpression(unknownTypeExpression, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitBlock(block: FirBlock, data: D): R {
|
||||||
|
return visitUnknownTypeExpression(block, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression, data: D): R {
|
||||||
|
return visitUnknownTypeExpression(classReferenceExpression, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun <T> visitConstExpression(constExpression: FirConstExpression<T>, data: D): R {
|
||||||
|
return visitUnknownTypeExpression(constExpression, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitErrorExpression(errorExpression: FirErrorExpression, data: D): R {
|
||||||
|
return visitUnknownTypeExpression(errorExpression, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression, data: D): R {
|
||||||
|
return visitUnknownTypeExpression(qualifiedAccessExpression, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess, data: D): R {
|
||||||
|
return visitQualifiedAccessExpression(callableReferenceAccess, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitResolvedQualifier(resolvedQualifier: FirResolvedQualifier, data: D): R {
|
||||||
|
return visitUnknownTypeExpression(resolvedQualifier, data)
|
||||||
|
}
|
||||||
|
|
||||||
open fun visitTryExpression(tryExpression: FirTryExpression, data: D): R {
|
open fun visitTryExpression(tryExpression: FirTryExpression, data: D): R {
|
||||||
return visitExpression(tryExpression, data)
|
return visitUnknownTypeExpression(tryExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitWhenExpression(whenExpression: FirWhenExpression, data: D): R {
|
open fun visitWhenExpression(whenExpression: FirWhenExpression, data: D): R {
|
||||||
return visitExpression(whenExpression, data)
|
return visitUnknownTypeExpression(whenExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitWhenSubjectExpression(whenSubjectExpression: FirWhenSubjectExpression, data: D): R {
|
open fun visitWhenSubjectExpression(whenSubjectExpression: FirWhenSubjectExpression, data: D): R {
|
||||||
return visitExpression(whenSubjectExpression, data)
|
return visitUnknownTypeExpression(whenSubjectExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitWrappedArgumentExpression(wrappedArgumentExpression: FirWrappedArgumentExpression, data: D): R {
|
open fun visitWrappedArgumentExpression(wrappedArgumentExpression: FirWrappedArgumentExpression, data: D): R {
|
||||||
@@ -308,6 +324,22 @@ abstract class FirVisitor<out R, in D> {
|
|||||||
return visitWrappedArgumentExpression(spreadArgumentExpression, data)
|
return visitWrappedArgumentExpression(spreadArgumentExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun visitClass(klass: FirClass, data: D): R {
|
||||||
|
return visitStatement(klass, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitAnonymousObject(anonymousObject: FirAnonymousObject, data: D): R {
|
||||||
|
return visitClass(anonymousObject, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitModifiableClass(modifiableClass: FirModifiableClass, data: D): R {
|
||||||
|
return visitClass(modifiableClass, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitErrorStatement(errorStatement: FirErrorStatement, data: D): R {
|
||||||
|
return visitStatement(errorStatement, data)
|
||||||
|
}
|
||||||
|
|
||||||
open fun visitLoop(loop: FirLoop, data: D): R {
|
open fun visitLoop(loop: FirLoop, data: D): R {
|
||||||
return visitStatement(loop, data)
|
return visitStatement(loop, data)
|
||||||
}
|
}
|
||||||
@@ -332,18 +364,10 @@ abstract class FirVisitor<out R, in D> {
|
|||||||
return visitAssignment(variableAssignment, data)
|
return visitAssignment(variableAssignment, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitModifiableQualifiedAccess(modifiableQualifiedAccess: FirModifiableQualifiedAccess, data: D): R {
|
open fun <C : FirReference> visitModifiableQualifiedAccess(modifiableQualifiedAccess: FirModifiableQualifiedAccess<C>, data: D): R {
|
||||||
return visitQualifiedAccess(modifiableQualifiedAccess, data)
|
return visitQualifiedAccess(modifiableQualifiedAccess, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression, data: D): R {
|
|
||||||
return visitQualifiedAccess(qualifiedAccessExpression, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess, data: D): R {
|
|
||||||
return visitQualifiedAccessExpression(callableReferenceAccess, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitTargetElement(targetElement: FirTargetElement, data: D): R {
|
open fun visitTargetElement(targetElement: FirTargetElement, data: D): R {
|
||||||
return visitElement(targetElement, data)
|
return visitElement(targetElement, data)
|
||||||
}
|
}
|
||||||
|
|||||||
+122
-74
@@ -172,52 +172,60 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitElement(statement, null)
|
visitElement(statement, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitClass(klass: FirClass) {
|
open fun visitAnnotatedStatement(annotatedStatement: FirAnnotatedStatement) {
|
||||||
visitStatement(klass, null)
|
visitStatement(annotatedStatement, null)
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitAnonymousObject(anonymousObject: FirAnonymousObject) {
|
|
||||||
visitClass(anonymousObject, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitModifiableClass(modifiableClass: FirModifiableClass) {
|
|
||||||
visitClass(modifiableClass, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitErrorStatement(errorStatement: FirErrorStatement) {
|
|
||||||
visitStatement(errorStatement, null)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitExpression(expression: FirExpression) {
|
open fun visitExpression(expression: FirExpression) {
|
||||||
visitStatement(expression, null)
|
visitAnnotatedStatement(expression, null)
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitBlock(block: FirBlock) {
|
|
||||||
visitExpression(block, null)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitCall(call: FirCall) {
|
open fun visitCall(call: FirCall) {
|
||||||
visitExpression(call, null)
|
visitExpression(call, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitAnnotationCall(annotationCall: FirAnnotationCall) {
|
|
||||||
visitCall(annotationCall, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitArrayOfCall(arrayOfCall: FirArrayOfCall) {
|
|
||||||
visitCall(arrayOfCall, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitArraySetCall(arraySetCall: FirArraySetCall) {
|
open fun visitArraySetCall(arraySetCall: FirArraySetCall) {
|
||||||
visitCall(arraySetCall, null)
|
visitCall(arraySetCall, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun visitCallWithArgumentList(callWithArgumentList: FirCallWithArgumentList) {
|
||||||
|
visitCall(callWithArgumentList, null)
|
||||||
|
}
|
||||||
|
|
||||||
open fun visitDelegatedConstructorCall(delegatedConstructorCall: FirDelegatedConstructorCall) {
|
open fun visitDelegatedConstructorCall(delegatedConstructorCall: FirDelegatedConstructorCall) {
|
||||||
visitCall(delegatedConstructorCall, null)
|
visitCallWithArgumentList(delegatedConstructorCall, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitOperatorCall(operatorCall: FirOperatorCall) {
|
||||||
|
visitCallWithArgumentList(operatorCall, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitOperationBasedCall(operationBasedCall: FirOperationBasedCall) {
|
||||||
|
visitOperatorCall(operationBasedCall, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitTypeOperatorCall(typeOperatorCall: FirTypeOperatorCall) {
|
||||||
|
visitOperationBasedCall(typeOperatorCall, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitStringConcatenationCall(stringConcatenationCall: FirStringConcatenationCall) {
|
||||||
|
visitCallWithArgumentList(stringConcatenationCall, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitUnknownTypeCallWithArgumentList(unknownTypeCallWithArgumentList: FirUnknownTypeCallWithArgumentList) {
|
||||||
|
visitCallWithArgumentList(unknownTypeCallWithArgumentList, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitAnnotationCall(annotationCall: FirAnnotationCall) {
|
||||||
|
visitUnknownTypeCallWithArgumentList(annotationCall, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitArrayOfCall(arrayOfCall: FirArrayOfCall) {
|
||||||
|
visitUnknownTypeCallWithArgumentList(arrayOfCall, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitFunctionCall(functionCall: FirFunctionCall) {
|
open fun visitFunctionCall(functionCall: FirFunctionCall) {
|
||||||
visitCall(functionCall, null)
|
visitUnknownTypeCallWithArgumentList(functionCall, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitComponentCall(componentCall: FirComponentCall) {
|
open fun visitComponentCall(componentCall: FirComponentCall) {
|
||||||
@@ -225,71 +233,79 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
open fun visitGetClassCall(getClassCall: FirGetClassCall) {
|
open fun visitGetClassCall(getClassCall: FirGetClassCall) {
|
||||||
visitCall(getClassCall, null)
|
visitUnknownTypeCallWithArgumentList(getClassCall, null)
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitOperatorCall(operatorCall: FirOperatorCall) {
|
|
||||||
visitCall(operatorCall, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitTypeOperatorCall(typeOperatorCall: FirTypeOperatorCall) {
|
|
||||||
visitOperatorCall(typeOperatorCall, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitStringConcatenationCall(stringConcatenationCall: FirStringConcatenationCall) {
|
|
||||||
visitCall(stringConcatenationCall, null)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitUncheckedNotNullCast(uncheckedNotNullCast: FirUncheckedNotNullCast) {
|
open fun visitUncheckedNotNullCast(uncheckedNotNullCast: FirUncheckedNotNullCast) {
|
||||||
visitCall(uncheckedNotNullCast, null)
|
visitUnknownTypeCallWithArgumentList(uncheckedNotNullCast, null)
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression) {
|
|
||||||
visitExpression(classReferenceExpression, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun <T> visitConstExpression(constExpression: FirConstExpression<T>) {
|
|
||||||
visitExpression(constExpression, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitErrorExpression(errorExpression: FirErrorExpression) {
|
|
||||||
visitExpression(errorExpression, null)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun <E : FirTargetElement> visitJump(jump: FirJump<E>) {
|
open fun <E : FirTargetElement> visitJump(jump: FirJump<E>) {
|
||||||
visitExpression(jump, null)
|
visitExpression(jump, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun visitLoopJump(loopJump: FirLoopJump) {
|
||||||
|
visitJump(loopJump, null)
|
||||||
|
}
|
||||||
|
|
||||||
open fun visitBreakExpression(breakExpression: FirBreakExpression) {
|
open fun visitBreakExpression(breakExpression: FirBreakExpression) {
|
||||||
visitJump(breakExpression, null)
|
visitLoopJump(breakExpression, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitContinueExpression(continueExpression: FirContinueExpression) {
|
open fun visitContinueExpression(continueExpression: FirContinueExpression) {
|
||||||
visitJump(continueExpression, null)
|
visitLoopJump(continueExpression, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitReturnExpression(returnExpression: FirReturnExpression) {
|
open fun visitReturnExpression(returnExpression: FirReturnExpression) {
|
||||||
visitJump(returnExpression, null)
|
visitJump(returnExpression, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitResolvedQualifier(resolvedQualifier: FirResolvedQualifier) {
|
|
||||||
visitExpression(resolvedQualifier, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitThrowExpression(throwExpression: FirThrowExpression) {
|
open fun visitThrowExpression(throwExpression: FirThrowExpression) {
|
||||||
visitExpression(throwExpression, null)
|
visitExpression(throwExpression, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun visitUnknownTypeExpression(unknownTypeExpression: FirUnknownTypeExpression) {
|
||||||
|
visitExpression(unknownTypeExpression, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitBlock(block: FirBlock) {
|
||||||
|
visitUnknownTypeExpression(block, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression) {
|
||||||
|
visitUnknownTypeExpression(classReferenceExpression, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun <T> visitConstExpression(constExpression: FirConstExpression<T>) {
|
||||||
|
visitUnknownTypeExpression(constExpression, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitErrorExpression(errorExpression: FirErrorExpression) {
|
||||||
|
visitUnknownTypeExpression(errorExpression, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression) {
|
||||||
|
visitUnknownTypeExpression(qualifiedAccessExpression, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess) {
|
||||||
|
visitQualifiedAccessExpression(callableReferenceAccess, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitResolvedQualifier(resolvedQualifier: FirResolvedQualifier) {
|
||||||
|
visitUnknownTypeExpression(resolvedQualifier, null)
|
||||||
|
}
|
||||||
|
|
||||||
open fun visitTryExpression(tryExpression: FirTryExpression) {
|
open fun visitTryExpression(tryExpression: FirTryExpression) {
|
||||||
visitExpression(tryExpression, null)
|
visitUnknownTypeExpression(tryExpression, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitWhenExpression(whenExpression: FirWhenExpression) {
|
open fun visitWhenExpression(whenExpression: FirWhenExpression) {
|
||||||
visitExpression(whenExpression, null)
|
visitUnknownTypeExpression(whenExpression, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitWhenSubjectExpression(whenSubjectExpression: FirWhenSubjectExpression) {
|
open fun visitWhenSubjectExpression(whenSubjectExpression: FirWhenSubjectExpression) {
|
||||||
visitExpression(whenSubjectExpression, null)
|
visitUnknownTypeExpression(whenSubjectExpression, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitWrappedArgumentExpression(wrappedArgumentExpression: FirWrappedArgumentExpression) {
|
open fun visitWrappedArgumentExpression(wrappedArgumentExpression: FirWrappedArgumentExpression) {
|
||||||
@@ -308,6 +324,22 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitWrappedArgumentExpression(spreadArgumentExpression, null)
|
visitWrappedArgumentExpression(spreadArgumentExpression, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun visitClass(klass: FirClass) {
|
||||||
|
visitStatement(klass, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitAnonymousObject(anonymousObject: FirAnonymousObject) {
|
||||||
|
visitClass(anonymousObject, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitModifiableClass(modifiableClass: FirModifiableClass) {
|
||||||
|
visitClass(modifiableClass, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitErrorStatement(errorStatement: FirErrorStatement) {
|
||||||
|
visitStatement(errorStatement, null)
|
||||||
|
}
|
||||||
|
|
||||||
open fun visitLoop(loop: FirLoop) {
|
open fun visitLoop(loop: FirLoop) {
|
||||||
visitStatement(loop, null)
|
visitStatement(loop, null)
|
||||||
}
|
}
|
||||||
@@ -332,18 +364,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitAssignment(variableAssignment, null)
|
visitAssignment(variableAssignment, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitModifiableQualifiedAccess(modifiableQualifiedAccess: FirModifiableQualifiedAccess) {
|
open fun <C : FirReference> visitModifiableQualifiedAccess(modifiableQualifiedAccess: FirModifiableQualifiedAccess<C>) {
|
||||||
visitQualifiedAccess(modifiableQualifiedAccess, null)
|
visitQualifiedAccess(modifiableQualifiedAccess, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression) {
|
|
||||||
visitQualifiedAccess(qualifiedAccessExpression, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess) {
|
|
||||||
visitQualifiedAccessExpression(callableReferenceAccess, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitTargetElement(targetElement: FirTargetElement) {
|
open fun visitTargetElement(targetElement: FirTargetElement) {
|
||||||
visitElement(targetElement, null)
|
visitElement(targetElement, null)
|
||||||
}
|
}
|
||||||
@@ -408,6 +432,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitElement(whenBranch, null)
|
visitElement(whenBranch, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitAnnotatedStatement(annotatedStatement: FirAnnotatedStatement, data: Nothing?) {
|
||||||
|
visitAnnotatedStatement(annotatedStatement)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: Nothing?) {
|
final override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: Nothing?) {
|
||||||
visitAnnotationCall(annotationCall)
|
visitAnnotationCall(annotationCall)
|
||||||
}
|
}
|
||||||
@@ -448,6 +476,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitCall(call)
|
visitCall(call)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitCallWithArgumentList(callWithArgumentList: FirCallWithArgumentList, data: Nothing?) {
|
||||||
|
visitCallWithArgumentList(callWithArgumentList)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: Nothing?) {
|
final override fun visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: Nothing?) {
|
||||||
visitCallableDeclaration(callableDeclaration)
|
visitCallableDeclaration(callableDeclaration)
|
||||||
}
|
}
|
||||||
@@ -600,6 +632,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitLoop(loop)
|
visitLoop(loop)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitLoopJump(loopJump: FirLoopJump, data: Nothing?) {
|
||||||
|
visitLoopJump(loopJump)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: Nothing?) {
|
final override fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: Nothing?) {
|
||||||
visitMemberDeclaration(memberDeclaration)
|
visitMemberDeclaration(memberDeclaration)
|
||||||
}
|
}
|
||||||
@@ -612,7 +648,7 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitModifiableFunction(modifiableFunction)
|
visitModifiableFunction(modifiableFunction)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitModifiableQualifiedAccess(modifiableQualifiedAccess: FirModifiableQualifiedAccess, data: Nothing?) {
|
final override fun <C : FirReference> visitModifiableQualifiedAccess(modifiableQualifiedAccess: FirModifiableQualifiedAccess<C>, data: Nothing?) {
|
||||||
visitModifiableQualifiedAccess(modifiableQualifiedAccess)
|
visitModifiableQualifiedAccess(modifiableQualifiedAccess)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -632,6 +668,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitNamedReference(namedReference)
|
visitNamedReference(namedReference)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitOperationBasedCall(operationBasedCall: FirOperationBasedCall, data: Nothing?) {
|
||||||
|
visitOperationBasedCall(operationBasedCall)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitOperatorCall(operatorCall: FirOperatorCall, data: Nothing?) {
|
final override fun visitOperatorCall(operatorCall: FirOperatorCall, data: Nothing?) {
|
||||||
visitOperatorCall(operatorCall)
|
visitOperatorCall(operatorCall)
|
||||||
}
|
}
|
||||||
@@ -764,6 +804,14 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitUncheckedNotNullCast(uncheckedNotNullCast)
|
visitUncheckedNotNullCast(uncheckedNotNullCast)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitUnknownTypeCallWithArgumentList(unknownTypeCallWithArgumentList: FirUnknownTypeCallWithArgumentList, data: Nothing?) {
|
||||||
|
visitUnknownTypeCallWithArgumentList(unknownTypeCallWithArgumentList)
|
||||||
|
}
|
||||||
|
|
||||||
|
final override fun visitUnknownTypeExpression(unknownTypeExpression: FirUnknownTypeExpression, data: Nothing?) {
|
||||||
|
visitUnknownTypeExpression(unknownTypeExpression)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitUserTypeRef(userTypeRef: FirUserTypeRef, data: Nothing?) {
|
final override fun visitUserTypeRef(userTypeRef: FirUserTypeRef, data: Nothing?) {
|
||||||
visitUserTypeRef(userTypeRef)
|
visitUserTypeRef(userTypeRef)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user