From 615d3aafefba45e19e761266bf4d721d278e2ff7 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Fri, 18 Oct 2019 14:25:34 +0300 Subject: [PATCH] [FIR] Automatically generated abstract classes instead of interfaces if possible --- .../fir/java/declarations/FirJavaField.kt | 5 +- .../dfa/FirControlFlowGraphReferenceImpl.kt | 4 +- .../src/org/jetbrains/kotlin/fir/FirLabel.kt | 6 +- .../fir/declarations/FirAnonymousFunction.kt | 39 ++-- .../declarations/FirAnonymousInitializer.kt | 11 +- .../fir/declarations/FirAnonymousObject.kt | 19 +- .../kotlin/fir/declarations/FirEnumEntry.kt | 35 ++-- .../fir/declarations/FirErrorFunction.kt | 33 ++-- .../kotlin/fir/declarations/FirField.kt | 47 ++--- .../kotlin/fir/declarations/FirFile.kt | 19 +- .../kotlin/fir/declarations/FirImport.kt | 11 +- .../kotlin/fir/declarations/FirProperty.kt | 55 +++--- .../fir/declarations/FirPropertyAccessor.kt | 37 ++-- .../fir/declarations/FirResolvedImport.kt | 20 +- .../kotlin/fir/declarations/FirSealedClass.kt | 33 ++-- .../fir/declarations/FirSimpleFunction.kt | 37 ++-- .../kotlin/fir/declarations/FirTypeAlias.kt | 25 +-- .../fir/declarations/FirTypeParameter.kt | 21 ++- .../fir/declarations/FirValueParameter.kt | 49 ++--- .../impl/FirAnonymousFunctionImpl.kt | 3 +- .../impl/FirAnonymousInitializerImpl.kt | 3 +- .../impl/FirAnonymousObjectImpl.kt | 3 +- .../declarations/impl/FirConstructorImpl.kt | 3 +- .../impl/FirDefaultSetterValueParameter.kt | 3 +- .../fir/declarations/impl/FirEnumEntryImpl.kt | 3 +- .../declarations/impl/FirErrorFunctionImpl.kt | 3 +- .../fir/declarations/impl/FirFileImpl.kt | 3 +- .../fir/declarations/impl/FirImportImpl.kt | 3 +- .../impl/FirModifiableConstructor.kt | 45 ++--- .../impl/FirPropertyAccessorImpl.kt | 3 +- .../fir/declarations/impl/FirPropertyImpl.kt | 3 +- .../impl/FirResolvedImportImpl.kt | 3 +- .../declarations/impl/FirSealedClassImpl.kt | 3 +- .../impl/FirSimpleFunctionImpl.kt | 3 +- .../fir/declarations/impl/FirTypeAliasImpl.kt | 3 +- .../declarations/impl/FirTypeParameterImpl.kt | 3 +- .../impl/FirValueParameterImpl.kt | 3 +- .../fir/expressions/FirAnnotationCall.kt | 17 +- .../kotlin/fir/expressions/FirArrayOfCall.kt | 13 +- .../kotlin/fir/expressions/FirArraySetCall.kt | 41 ++-- .../expressions/FirBinaryLogicExpression.kt | 21 ++- .../kotlin/fir/expressions/FirBlock.kt | 13 +- .../fir/expressions/FirBreakExpression.kt | 11 +- .../expressions/FirCallableReferenceAccess.kt | 26 +-- .../kotlin/fir/expressions/FirCatch.kt | 15 +- .../FirClassReferenceExpression.kt | 11 +- .../fir/expressions/FirComponentCall.kt | 34 ++-- .../fir/expressions/FirConstExpression.kt | 13 +- .../fir/expressions/FirContinueExpression.kt | 11 +- .../FirDelegatedConstructorCall.kt | 21 ++- .../kotlin/fir/expressions/FirDoWhileLoop.kt | 19 +- .../fir/expressions/FirErrorExpression.kt | 11 +- .../expressions/FirExpressionWithSmartcast.kt | 32 ++-- .../kotlin/fir/expressions/FirFunctionCall.kt | 32 ++-- .../kotlin/fir/expressions/FirGetClassCall.kt | 15 +- .../FirLambdaArgumentExpression.kt | 12 +- .../expressions/FirNamedArgumentExpression.kt | 14 +- .../kotlin/fir/expressions/FirOperatorCall.kt | 15 +- .../FirQualifiedAccessExpression.kt | 27 +-- .../fir/expressions/FirResolvedQualifier.kt | 15 +- .../fir/expressions/FirReturnExpression.kt | 13 +- .../FirSpreadArgumentExpression.kt | 12 +- .../expressions/FirStringConcatenationCall.kt | 13 +- .../expressions/FirThisReceiverExpression.kt | 26 +-- .../fir/expressions/FirThrowExpression.kt | 11 +- .../fir/expressions/FirTryExpression.kt | 27 +-- .../fir/expressions/FirTypeOperatorCall.kt | 17 +- .../fir/expressions/FirVariableAssignment.kt | 33 ++-- .../kotlin/fir/expressions/FirWhenBranch.kt | 15 +- .../fir/expressions/FirWhenExpression.kt | 29 +-- .../expressions/FirWhenSubjectExpression.kt | 11 +- .../kotlin/fir/expressions/FirWhileLoop.kt | 19 +- .../FirWrappedArgumentExpression.kt | 12 +- .../FirWrappedDelegateExpression.kt | 12 +- .../fir/expressions/FirWrappedExpression.kt | 11 +- .../expressions/impl/FirAnnotationCallImpl.kt | 3 +- .../expressions/impl/FirArrayOfCallImpl.kt | 3 +- .../expressions/impl/FirArraySetCallImpl.kt | 3 +- .../impl/FirBinaryLogicExpressionImpl.kt | 3 +- .../fir/expressions/impl/FirBlockImpl.kt | 3 +- .../impl/FirBreakExpressionImpl.kt | 3 +- .../impl/FirCallableReferenceAccessImpl.kt | 3 +- .../fir/expressions/impl/FirCatchImpl.kt | 3 +- .../impl/FirClassReferenceExpressionImpl.kt | 3 +- .../expressions/impl/FirComponentCallImpl.kt | 3 +- .../impl/FirConstExpressionImpl.kt | 3 +- .../impl/FirContinueExpressionImpl.kt | 3 +- .../impl/FirDelegatedConstructorCallImpl.kt | 3 +- .../expressions/impl/FirDoWhileLoopImpl.kt | 3 +- .../impl/FirEmptyExpressionBlock.kt | 3 +- .../impl/FirErrorExpressionImpl.kt | 3 +- .../impl/FirExpressionWithSmartcastImpl.kt | 5 +- .../expressions/impl/FirFunctionCallImpl.kt | 3 +- .../expressions/impl/FirGetClassCallImpl.kt | 3 +- .../impl/FirLambdaArgumentExpressionImpl.kt | 3 +- .../impl/FirNamedArgumentExpressionImpl.kt | 3 +- .../expressions/impl/FirOperatorCallImpl.kt | 3 +- .../impl/FirQualifiedAccessExpressionImpl.kt | 3 +- .../impl/FirResolvedQualifierImpl.kt | 3 +- .../impl/FirReturnExpressionImpl.kt | 3 +- .../impl/FirSingleExpressionBlock.kt | 3 +- .../impl/FirSpreadArgumentExpressionImpl.kt | 3 +- .../impl/FirStringConcatenationCallImpl.kt | 3 +- .../impl/FirThisReceiverExpressionImpl.kt | 3 +- .../impl/FirThrowExpressionImpl.kt | 3 +- .../expressions/impl/FirTryExpressionImpl.kt | 3 +- .../impl/FirTypeOperatorCallImpl.kt | 3 +- .../impl/FirVariableAssignmentImpl.kt | 3 +- .../fir/expressions/impl/FirWhenBranchImpl.kt | 3 +- .../expressions/impl/FirWhenExpressionImpl.kt | 3 +- .../impl/FirWhenSubjectExpressionImpl.kt | 3 +- .../fir/expressions/impl/FirWhileLoopImpl.kt | 3 +- .../impl/FirWrappedDelegateExpressionImpl.kt | 3 +- .../jetbrains/kotlin/fir/impl/FirLabelImpl.kt | 3 +- .../references/FirBackingFieldReference.kt | 10 +- .../FirControlFlowGraphReference.kt | 4 +- .../references/FirDelegateFieldReference.kt | 10 +- .../fir/references/FirErrorNamedReference.kt | 10 +- .../fir/references/FirNamedReference.kt | 8 +- .../kotlin/fir/references/FirReference.kt | 5 +- .../FirResolvedCallableReference.kt | 10 +- .../fir/references/FirSuperReference.kt | 8 +- .../kotlin/fir/references/FirThisReference.kt | 10 +- .../impl/FirBackingFieldReferenceImpl.kt | 3 +- .../impl/FirDelegateFieldReferenceImpl.kt | 3 +- .../impl/FirEmptyControlFlowGraphReference.kt | 3 +- .../impl/FirErrorNamedReferenceImpl.kt | 3 +- .../impl/FirExplicitSuperReference.kt | 3 +- .../impl/FirExplicitThisReference.kt | 3 +- .../impl/FirImplicitThisReference.kt | 3 +- ...rPropertyFromParameterCallableReference.kt | 3 +- .../impl/FirResolvedCallableReferenceImpl.kt | 3 +- .../impl/FirSimpleNamedReference.kt | 3 +- .../fir/references/impl/FirStubReference.kt | 3 +- .../kotlin/fir/types/FirDelegatedTypeRef.kt | 11 +- .../kotlin/fir/types/FirDynamicTypeRef.kt | 9 +- .../kotlin/fir/types/FirErrorTypeRef.kt | 10 +- .../kotlin/fir/types/FirImplicitTypeRef.kt | 7 +- .../fir/types/FirResolvedFunctionTypeRef.kt | 16 +- .../kotlin/fir/types/FirResolvedTypeRef.kt | 9 +- .../kotlin/fir/types/FirStarProjection.kt | 4 +- .../kotlin/fir/types/FirTypeProjection.kt | 5 +- .../types/FirTypeProjectionWithVariance.kt | 8 +- .../kotlin/fir/types/FirUserTypeRef.kt | 11 +- .../types/impl/FirComputingImplicitTypeRef.kt | 3 +- .../fir/types/impl/FirDelegatedTypeRefImpl.kt | 3 +- .../fir/types/impl/FirDynamicTypeRefImpl.kt | 3 +- .../fir/types/impl/FirErrorTypeRefImpl.kt | 3 +- .../types/impl/FirImplicitBuiltinTypeRef.kt | 3 +- .../fir/types/impl/FirImplicitTypeRefImpl.kt | 3 +- .../impl/FirResolvedFunctionTypeRefImpl.kt | 3 +- .../fir/types/impl/FirResolvedTypeRefImpl.kt | 3 +- .../fir/types/impl/FirStarProjectionImpl.kt | 3 +- .../impl/FirTypePlaceholderProjection.kt | 3 +- .../impl/FirTypeProjectionWithVarianceImpl.kt | 3 +- .../fir/types/impl/FirUserTypeRefImpl.kt | 3 +- compiler/fir/tree/tree-generator/Readme.md | 6 + .../generator/ImplementationConfigurator.kt | 35 +--- .../generator/InterfaceAbstractClassSolver.kt | 178 ++++++++++++++++++ .../kotlin/fir/tree/generator/Main.kt | 26 +++ .../fir/tree/generator/NodeConfigurator.kt | 4 + .../kotlin/fir/tree/generator/Printer.kt | 125 ++++++++---- .../context/AbstractFieldConfigurator.kt | 4 + ...stractFirTreeImplementationConfigurator.kt | 2 +- .../fir/tree/generator/model/Element.kt | 16 +- .../tree/generator/model/Implementation.kt | 7 +- 166 files changed, 1143 insertions(+), 915 deletions(-) create mode 100644 compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/InterfaceAbstractClassSolver.kt diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt index 87ce3c52496..3c8c9f4b8ef 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt @@ -8,9 +8,6 @@ package org.jetbrains.kotlin.fir.java.declarations import com.intellij.psi.PsiElement import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibility -import org.jetbrains.kotlin.fir.FirAnnotationContainer -import org.jetbrains.kotlin.fir.FirElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl @@ -37,7 +34,7 @@ class FirJavaField( override var returnTypeRef: FirTypeRef, override val isVar: Boolean, isStatic: Boolean -) : FirPureAbstractElement(), FirAbstractAnnotatedElement, FirField { +) : FirAbstractAnnotatedElement, FirField() { init { symbol.bind(this) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirControlFlowGraphReferenceImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirControlFlowGraphReferenceImpl.kt index d0407691362..54032b36806 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirControlFlowGraphReferenceImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirControlFlowGraphReferenceImpl.kt @@ -6,14 +6,12 @@ package org.jetbrains.kotlin.fir.resolve.dfa import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.resolve.dfa.cfg.ControlFlowGraph import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.FirVisitor -class FirControlFlowGraphReferenceImpl(val controlFlowGraph: ControlFlowGraph) : FirPureAbstractElement(), FirControlFlowGraphReference { +class FirControlFlowGraphReferenceImpl(val controlFlowGraph: ControlFlowGraph) : FirControlFlowGraphReference() { override val psi: PsiElement? get() = null override fun acceptChildren(visitor: FirVisitor, data: D) {} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirLabel.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirLabel.kt index 385bf419613..d20470fc9ab 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirLabel.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirLabel.kt @@ -13,9 +13,9 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirLabel : FirElement { - override val psi: PsiElement? - val name: String +abstract class FirLabel : FirPureAbstractElement(), FirElement { + abstract override val psi: PsiElement? + abstract val name: String override fun accept(visitor: FirVisitor, data: D): R = visitor.visitLabel(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt index ed9d512c02d..64c8dc8a761 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations import com.intellij.psi.PsiElement import org.jetbrains.kotlin.contracts.description.InvocationKind import org.jetbrains.kotlin.fir.FirLabel +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock @@ -22,29 +23,29 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirAnonymousFunction : FirFunction, FirExpression { - override val psi: PsiElement? - override val session: FirSession - override val resolvePhase: FirResolvePhase - override val annotations: List - override val returnTypeRef: FirTypeRef - override val receiverTypeRef: FirTypeRef? - override val controlFlowGraphReference: FirControlFlowGraphReference - override val typeParameters: List - override val valueParameters: List - override val body: FirBlock? - override val typeRef: FirTypeRef - override val symbol: FirAnonymousFunctionSymbol - val label: FirLabel? - val invocationKind: InvocationKind? +abstract class FirAnonymousFunction : FirPureAbstractElement(), FirFunction, FirExpression { + abstract override val psi: PsiElement? + abstract override val session: FirSession + abstract override val resolvePhase: FirResolvePhase + abstract override val annotations: List + abstract override val returnTypeRef: FirTypeRef + abstract override val receiverTypeRef: FirTypeRef? + abstract override val controlFlowGraphReference: FirControlFlowGraphReference + abstract override val typeParameters: List + abstract override val valueParameters: List + abstract override val body: FirBlock? + abstract override val typeRef: FirTypeRef + abstract override val symbol: FirAnonymousFunctionSymbol + abstract val label: FirLabel? + abstract val invocationKind: InvocationKind? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitAnonymousFunction(this, data) - fun replaceInvocationKind(newInvocationKind: InvocationKind) + abstract fun replaceInvocationKind(newInvocationKind: InvocationKind) - override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirAnonymousFunction + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirAnonymousFunction - override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirAnonymousFunction + abstract override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirAnonymousFunction - override fun transformValueParameters(transformer: FirTransformer, data: D): FirAnonymousFunction + abstract override fun transformValueParameters(transformer: FirTransformer, data: D): FirAnonymousFunction } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousInitializer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousInitializer.kt index 8db4b4c655b..28fa190e5d6 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousInitializer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousInitializer.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.declarations import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.visitors.* @@ -15,11 +16,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirAnonymousInitializer : FirDeclaration { - override val psi: PsiElement? - override val session: FirSession - override val resolvePhase: FirResolvePhase - val body: FirBlock? +abstract class FirAnonymousInitializer : FirPureAbstractElement(), FirDeclaration { + abstract override val psi: PsiElement? + abstract override val session: FirSession + abstract override val resolvePhase: FirResolvePhase + abstract val body: FirBlock? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitAnonymousInitializer(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt index 495fd115891..e496407b2e3 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations import com.intellij.psi.PsiElement import org.jetbrains.kotlin.descriptors.ClassKind +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression @@ -18,15 +19,15 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirAnonymousObject : FirClass, FirExpression { - override val psi: PsiElement? - override val session: FirSession - override val resolvePhase: FirResolvePhase - override val classKind: ClassKind - override val superTypeRefs: List - override val declarations: List - override val annotations: List - override val typeRef: FirTypeRef +abstract class FirAnonymousObject : FirPureAbstractElement(), FirClass, FirExpression { + abstract override val psi: PsiElement? + abstract override val session: FirSession + abstract override val resolvePhase: FirResolvePhase + abstract override val classKind: ClassKind + abstract override val superTypeRefs: List + abstract override val declarations: List + abstract override val annotations: List + abstract override val typeRef: FirTypeRef override fun accept(visitor: FirVisitor, data: D): R = visitor.visitAnonymousObject(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt index 27844c864a7..681e23d174b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations import com.intellij.psi.PsiElement import org.jetbrains.kotlin.descriptors.ClassKind +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression @@ -20,24 +21,24 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirEnumEntry : FirRegularClass { - override val psi: PsiElement? - override val session: FirSession - override val resolvePhase: FirResolvePhase - override val name: Name - override val annotations: List - override val typeParameters: List - override val status: FirDeclarationStatus - override val supertypesComputationStatus: SupertypesComputationStatus - override val classKind: ClassKind - override val declarations: List - override val symbol: FirClassSymbol - override val companionObject: FirRegularClass? - override val superTypeRefs: List - val arguments: List - val typeRef: FirTypeRef +abstract class FirEnumEntry : FirPureAbstractElement(), FirRegularClass { + abstract override val psi: PsiElement? + abstract override val session: FirSession + abstract override val resolvePhase: FirResolvePhase + abstract override val name: Name + abstract override val annotations: List + abstract override val typeParameters: List + abstract override val status: FirDeclarationStatus + abstract override val supertypesComputationStatus: SupertypesComputationStatus + abstract override val classKind: ClassKind + abstract override val declarations: List + abstract override val symbol: FirClassSymbol + abstract override val companionObject: FirRegularClass? + abstract override val superTypeRefs: List + abstract val arguments: List + abstract val typeRef: FirTypeRef override fun accept(visitor: FirVisitor, data: D): R = visitor.visitEnumEntry(this, data) - fun transformArguments(transformer: FirTransformer, data: D): FirEnumEntry + abstract fun transformArguments(transformer: FirTransformer, data: D): FirEnumEntry } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt index a418b896e75..2120bbe6345 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.declarations import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock @@ -19,25 +20,25 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirErrorFunction : FirFunction { - override val psi: PsiElement? - override val session: FirSession - override val resolvePhase: FirResolvePhase - override val annotations: List - override val returnTypeRef: FirTypeRef - override val receiverTypeRef: FirTypeRef? - override val controlFlowGraphReference: FirControlFlowGraphReference - override val typeParameters: List - override val valueParameters: List - override val body: FirBlock? - val reason: String - override val symbol: FirErrorFunctionSymbol +abstract class FirErrorFunction : FirPureAbstractElement(), FirFunction { + abstract override val psi: PsiElement? + abstract override val session: FirSession + abstract override val resolvePhase: FirResolvePhase + abstract override val annotations: List + abstract override val returnTypeRef: FirTypeRef + abstract override val receiverTypeRef: FirTypeRef? + abstract override val controlFlowGraphReference: FirControlFlowGraphReference + abstract override val typeParameters: List + abstract override val valueParameters: List + abstract override val body: FirBlock? + abstract val reason: String + abstract override val symbol: FirErrorFunctionSymbol override fun accept(visitor: FirVisitor, data: D): R = visitor.visitErrorFunction(this, data) - override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirErrorFunction + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirErrorFunction - override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirErrorFunction + abstract override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirErrorFunction - override fun transformValueParameters(transformer: FirTransformer, data: D): FirErrorFunction + abstract override fun transformValueParameters(transformer: FirTransformer, data: D): FirErrorFunction } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirField.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirField.kt index 30356852415..de444d78e7b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirField.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirField.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.declarations import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression @@ -21,33 +22,33 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirField : FirVariable, FirCallableMemberDeclaration { - override val psi: PsiElement? - override val session: FirSession - override val resolvePhase: FirResolvePhase - override val returnTypeRef: FirTypeRef - override val receiverTypeRef: FirTypeRef? - override val name: Name - override val symbol: FirVariableSymbol - override val initializer: FirExpression? - override val delegate: FirExpression? - override val delegateFieldSymbol: FirDelegateFieldSymbol? - override val isVar: Boolean - override val isVal: Boolean - override val getter: FirPropertyAccessor? - override val setter: FirPropertyAccessor? - override val annotations: List - override val typeParameters: List - override val status: FirDeclarationStatus - override val containerSource: DeserializedContainerSource? +abstract class FirField : FirPureAbstractElement(), FirVariable, FirCallableMemberDeclaration { + abstract override val psi: PsiElement? + abstract override val session: FirSession + abstract override val resolvePhase: FirResolvePhase + abstract override val returnTypeRef: FirTypeRef + abstract override val receiverTypeRef: FirTypeRef? + abstract override val name: Name + abstract override val symbol: FirVariableSymbol + abstract override val initializer: FirExpression? + abstract override val delegate: FirExpression? + abstract override val delegateFieldSymbol: FirDelegateFieldSymbol? + abstract override val isVar: Boolean + abstract override val isVal: Boolean + abstract override val getter: FirPropertyAccessor? + abstract override val setter: FirPropertyAccessor? + abstract override val annotations: List + abstract override val typeParameters: List + abstract override val status: FirDeclarationStatus + abstract override val containerSource: DeserializedContainerSource? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitField(this, data) - override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirField + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirField - override fun transformGetter(transformer: FirTransformer, data: D): FirField + abstract override fun transformGetter(transformer: FirTransformer, data: D): FirField - override fun transformSetter(transformer: FirTransformer, data: D): FirField + abstract override fun transformSetter(transformer: FirTransformer, data: D): FirField - override fun transformOtherChildren(transformer: FirTransformer, data: D): FirField + abstract override fun transformOtherChildren(transformer: FirTransformer, data: D): FirField } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirFile.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirFile.kt index 7de0aad043b..6bc6d28bd86 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirFile.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirFile.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.FirAnnotationContainer +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.name.FqName @@ -17,15 +18,15 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirFile : FirAnnotationContainer, FirDeclaration { - override val psi: PsiElement? - override val annotations: List - override val session: FirSession - override val resolvePhase: FirResolvePhase - val imports: List - val declarations: List - val name: String - val packageFqName: FqName +abstract class FirFile : FirPureAbstractElement(), FirAnnotationContainer, FirDeclaration { + abstract override val psi: PsiElement? + abstract override val annotations: List + abstract override val session: FirSession + abstract override val resolvePhase: FirResolvePhase + abstract val imports: List + abstract val declarations: List + abstract val name: String + abstract val packageFqName: FqName override fun accept(visitor: FirVisitor, data: D): R = visitor.visitFile(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirImport.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirImport.kt index 35dfa2505a8..09a790d7ce6 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirImport.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirImport.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.FirElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.fir.visitors.* @@ -16,11 +17,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirImport : FirElement { - override val psi: PsiElement? - val importedFqName: FqName? - val isAllUnder: Boolean - val aliasName: Name? +abstract class FirImport : FirPureAbstractElement(), FirElement { + abstract override val psi: PsiElement? + abstract val importedFqName: FqName? + abstract val isAllUnder: Boolean + abstract val aliasName: Name? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitImport(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirProperty.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirProperty.kt index 4b6c69d28f0..19d6c7b8847 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirProperty.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirProperty.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.FirControlFlowGraphOwner +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression @@ -24,38 +25,38 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirProperty : FirVariable, FirControlFlowGraphOwner, FirTypeParametersOwner, FirCallableMemberDeclaration { - override val psi: PsiElement? - override val session: FirSession - override val resolvePhase: FirResolvePhase - override val returnTypeRef: FirTypeRef - override val receiverTypeRef: FirTypeRef? - override val name: Name - override val initializer: FirExpression? - override val delegate: FirExpression? - override val delegateFieldSymbol: FirDelegateFieldSymbol? - override val isVar: Boolean - override val isVal: Boolean - override val getter: FirPropertyAccessor? - override val setter: FirPropertyAccessor? - override val annotations: List - override val controlFlowGraphReference: FirControlFlowGraphReference - override val containerSource: DeserializedContainerSource? - override val symbol: FirPropertySymbol - val backingFieldSymbol: FirBackingFieldSymbol - val isLocal: Boolean - override val typeParameters: List - override val status: FirDeclarationStatus +abstract class FirProperty : FirPureAbstractElement(), FirVariable, FirControlFlowGraphOwner, FirTypeParametersOwner, FirCallableMemberDeclaration { + abstract override val psi: PsiElement? + abstract override val session: FirSession + abstract override val resolvePhase: FirResolvePhase + abstract override val returnTypeRef: FirTypeRef + abstract override val receiverTypeRef: FirTypeRef? + abstract override val name: Name + abstract override val initializer: FirExpression? + abstract override val delegate: FirExpression? + abstract override val delegateFieldSymbol: FirDelegateFieldSymbol? + abstract override val isVar: Boolean + abstract override val isVal: Boolean + abstract override val getter: FirPropertyAccessor? + abstract override val setter: FirPropertyAccessor? + abstract override val annotations: List + abstract override val controlFlowGraphReference: FirControlFlowGraphReference + abstract override val containerSource: DeserializedContainerSource? + abstract override val symbol: FirPropertySymbol + abstract val backingFieldSymbol: FirBackingFieldSymbol + abstract val isLocal: Boolean + abstract override val typeParameters: List + abstract override val status: FirDeclarationStatus override fun accept(visitor: FirVisitor, data: D): R = visitor.visitProperty(this, data) - override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirProperty + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirProperty - override fun transformGetter(transformer: FirTransformer, data: D): FirProperty + abstract override fun transformGetter(transformer: FirTransformer, data: D): FirProperty - override fun transformSetter(transformer: FirTransformer, data: D): FirProperty + abstract override fun transformSetter(transformer: FirTransformer, data: D): FirProperty - override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirProperty + abstract override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirProperty - override fun transformOtherChildren(transformer: FirTransformer, data: D): FirProperty + abstract override fun transformOtherChildren(transformer: FirTransformer, data: D): FirProperty } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt index e8f9e817eed..579fb6012c6 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.declarations import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock @@ -19,27 +20,27 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirPropertyAccessor : FirFunction { - override val psi: PsiElement? - override val session: FirSession - override val resolvePhase: FirResolvePhase - override val returnTypeRef: FirTypeRef - override val receiverTypeRef: FirTypeRef? - override val controlFlowGraphReference: FirControlFlowGraphReference - override val typeParameters: List - override val valueParameters: List - override val body: FirBlock? - override val symbol: FirPropertyAccessorSymbol - val isGetter: Boolean - val isSetter: Boolean - val status: FirDeclarationStatus - override val annotations: List +abstract class FirPropertyAccessor : FirPureAbstractElement(), FirFunction { + abstract override val psi: PsiElement? + abstract override val session: FirSession + abstract override val resolvePhase: FirResolvePhase + abstract override val returnTypeRef: FirTypeRef + abstract override val receiverTypeRef: FirTypeRef? + abstract override val controlFlowGraphReference: FirControlFlowGraphReference + abstract override val typeParameters: List + abstract override val valueParameters: List + abstract override val body: FirBlock? + abstract override val symbol: FirPropertyAccessorSymbol + abstract val isGetter: Boolean + abstract val isSetter: Boolean + abstract val status: FirDeclarationStatus + abstract override val annotations: List override fun accept(visitor: FirVisitor, data: D): R = visitor.visitPropertyAccessor(this, data) - override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirPropertyAccessor + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirPropertyAccessor - override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirPropertyAccessor + abstract override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirPropertyAccessor - override fun transformValueParameters(transformer: FirTransformer, data: D): FirPropertyAccessor + abstract override fun transformValueParameters(transformer: FirTransformer, data: D): FirPropertyAccessor } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirResolvedImport.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirResolvedImport.kt index c0e280cf37d..50285dcc7e4 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirResolvedImport.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirResolvedImport.kt @@ -16,16 +16,16 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirResolvedImport : FirImport { - override val psi: PsiElement? - override val importedFqName: FqName? - override val isAllUnder: Boolean - override val aliasName: Name? - val delegate: FirImport - val packageFqName: FqName - val relativeClassName: FqName? - val resolvedClassId: ClassId? - val importedName: Name? +abstract class FirResolvedImport : FirImport() { + abstract override val psi: PsiElement? + abstract override val importedFqName: FqName? + abstract override val isAllUnder: Boolean + abstract override val aliasName: Name? + abstract val delegate: FirImport + abstract val packageFqName: FqName + abstract val relativeClassName: FqName? + abstract val resolvedClassId: ClassId? + abstract val importedName: Name? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitResolvedImport(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt index 1a9a974ebc7..d6cb2f2218b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations import com.intellij.psi.PsiElement import org.jetbrains.kotlin.descriptors.ClassKind +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol @@ -20,23 +21,23 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirSealedClass : FirRegularClass { - override val psi: PsiElement? - override val session: FirSession - override val resolvePhase: FirResolvePhase - override val name: Name - override val annotations: List - override val typeParameters: List - override val status: FirDeclarationStatus - override val supertypesComputationStatus: SupertypesComputationStatus - override val classKind: ClassKind - override val declarations: List - override val symbol: FirClassSymbol - override val companionObject: FirRegularClass? - override val superTypeRefs: List - val inheritors: List +abstract class FirSealedClass : FirPureAbstractElement(), FirRegularClass { + abstract override val psi: PsiElement? + abstract override val session: FirSession + abstract override val resolvePhase: FirResolvePhase + abstract override val name: Name + abstract override val annotations: List + abstract override val typeParameters: List + abstract override val status: FirDeclarationStatus + abstract override val supertypesComputationStatus: SupertypesComputationStatus + abstract override val classKind: ClassKind + abstract override val declarations: List + abstract override val symbol: FirClassSymbol + abstract override val companionObject: FirRegularClass? + abstract override val superTypeRefs: List + abstract val inheritors: List override fun accept(visitor: FirVisitor, data: D): R = visitor.visitSealedClass(this, data) - fun replaceInheritors(newInheritors: List) + abstract fun replaceInheritors(newInheritors: List) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt index 7d27f52ae85..d3e1a69009d 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.declarations import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock @@ -21,27 +22,27 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirSimpleFunction : FirMemberFunction { - override val psi: PsiElement? - override val session: FirSession - override val resolvePhase: FirResolvePhase - override val returnTypeRef: FirTypeRef - override val receiverTypeRef: FirTypeRef? - override val controlFlowGraphReference: FirControlFlowGraphReference - override val typeParameters: List - override val valueParameters: List - override val body: FirBlock? - override val name: Name - override val status: FirDeclarationStatus - override val containerSource: DeserializedContainerSource? - override val symbol: FirFunctionSymbol - override val annotations: List +abstract class FirSimpleFunction : FirPureAbstractElement(), FirMemberFunction { + abstract override val psi: PsiElement? + abstract override val session: FirSession + abstract override val resolvePhase: FirResolvePhase + abstract override val returnTypeRef: FirTypeRef + abstract override val receiverTypeRef: FirTypeRef? + abstract override val controlFlowGraphReference: FirControlFlowGraphReference + abstract override val typeParameters: List + abstract override val valueParameters: List + abstract override val body: FirBlock? + abstract override val name: Name + abstract override val status: FirDeclarationStatus + abstract override val containerSource: DeserializedContainerSource? + abstract override val symbol: FirFunctionSymbol + abstract override val annotations: List override fun accept(visitor: FirVisitor, data: D): R = visitor.visitSimpleFunction(this, data) - override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirSimpleFunction + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirSimpleFunction - override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirSimpleFunction + abstract override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirSimpleFunction - override fun transformValueParameters(transformer: FirTransformer, data: D): FirSimpleFunction + abstract override fun transformValueParameters(transformer: FirTransformer, data: D): FirSimpleFunction } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt index eaf81f4d1ca..457ed965f51 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.declarations import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol @@ -18,19 +19,19 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirTypeAlias : FirClassLikeDeclaration { - override val psi: PsiElement? - override val session: FirSession - override val resolvePhase: FirResolvePhase - override val name: Name - override val typeParameters: List - override val status: FirDeclarationStatus - override val supertypesComputationStatus: SupertypesComputationStatus - override val symbol: FirTypeAliasSymbol - val expandedTypeRef: FirTypeRef - override val annotations: List +abstract class FirTypeAlias : FirPureAbstractElement(), FirClassLikeDeclaration { + abstract override val psi: PsiElement? + abstract override val session: FirSession + abstract override val resolvePhase: FirResolvePhase + abstract override val name: Name + abstract override val typeParameters: List + abstract override val status: FirDeclarationStatus + abstract override val supertypesComputationStatus: SupertypesComputationStatus + abstract override val symbol: FirTypeAliasSymbol + abstract val expandedTypeRef: FirTypeRef + abstract override val annotations: List override fun accept(visitor: FirVisitor, data: D): R = visitor.visitTypeAlias(this, data) - fun replaceExpandedTypeRef(newExpandedTypeRef: FirTypeRef) + abstract fun replaceExpandedTypeRef(newExpandedTypeRef: FirTypeRef) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt index 7c5ed876b25..53629d0ed25 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.FirAnnotationContainer +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSymbolOwner import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall @@ -21,16 +22,16 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirTypeParameter : FirNamedDeclaration, FirSymbolOwner, FirAnnotationContainer { - override val psi: PsiElement? - override val session: FirSession - override val resolvePhase: FirResolvePhase - override val name: Name - override val symbol: FirTypeParameterSymbol - val variance: Variance - val isReified: Boolean - val bounds: List - override val annotations: List +abstract class FirTypeParameter : FirPureAbstractElement(), FirNamedDeclaration, FirSymbolOwner, FirAnnotationContainer { + abstract override val psi: PsiElement? + abstract override val session: FirSession + abstract override val resolvePhase: FirResolvePhase + abstract override val name: Name + abstract override val symbol: FirTypeParameterSymbol + abstract val variance: Variance + abstract val isReified: Boolean + abstract val bounds: List + abstract override val annotations: List override fun accept(visitor: FirVisitor, data: D): R = visitor.visitTypeParameter(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt index 10f59750c09..195a982c5f7 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.declarations import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression @@ -20,34 +21,34 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirValueParameter : FirVariable { - override val psi: PsiElement? - override val session: FirSession - override val resolvePhase: FirResolvePhase - override val returnTypeRef: FirTypeRef - override val receiverTypeRef: FirTypeRef? - override val name: Name - override val symbol: FirVariableSymbol - override val initializer: FirExpression? - override val delegate: FirExpression? - override val delegateFieldSymbol: FirDelegateFieldSymbol? - override val isVar: Boolean - override val isVal: Boolean - override val getter: FirPropertyAccessor? - override val setter: FirPropertyAccessor? - override val annotations: List - val defaultValue: FirExpression? - val isCrossinline: Boolean - val isNoinline: Boolean - val isVararg: Boolean +abstract class FirValueParameter : FirPureAbstractElement(), FirVariable { + abstract override val psi: PsiElement? + abstract override val session: FirSession + abstract override val resolvePhase: FirResolvePhase + abstract override val returnTypeRef: FirTypeRef + abstract override val receiverTypeRef: FirTypeRef? + abstract override val name: Name + abstract override val symbol: FirVariableSymbol + abstract override val initializer: FirExpression? + abstract override val delegate: FirExpression? + abstract override val delegateFieldSymbol: FirDelegateFieldSymbol? + abstract override val isVar: Boolean + abstract override val isVal: Boolean + abstract override val getter: FirPropertyAccessor? + abstract override val setter: FirPropertyAccessor? + abstract override val annotations: List + abstract val defaultValue: FirExpression? + abstract val isCrossinline: Boolean + abstract val isNoinline: Boolean + abstract val isVararg: Boolean override fun accept(visitor: FirVisitor, data: D): R = visitor.visitValueParameter(this, data) - override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirValueParameter + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirValueParameter - override fun transformGetter(transformer: FirTransformer, data: D): FirValueParameter + abstract override fun transformGetter(transformer: FirTransformer, data: D): FirValueParameter - override fun transformSetter(transformer: FirTransformer, data: D): FirValueParameter + abstract override fun transformSetter(transformer: FirTransformer, data: D): FirValueParameter - override fun transformOtherChildren(transformer: FirTransformer, data: D): FirValueParameter + abstract override fun transformOtherChildren(transformer: FirTransformer, data: D): FirValueParameter } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt index 5bf926ba5c6..bb9ed031611 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement import org.jetbrains.kotlin.contracts.description.InvocationKind import org.jetbrains.kotlin.fir.FirLabel -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction import org.jetbrains.kotlin.fir.declarations.FirResolvePhase @@ -35,7 +34,7 @@ class FirAnonymousFunctionImpl( override var returnTypeRef: FirTypeRef, override var receiverTypeRef: FirTypeRef?, override val symbol: FirAnonymousFunctionSymbol -) : FirPureAbstractElement(), FirAnonymousFunction, FirModifiableFunction, FirAbstractAnnotatedElement { +) : FirAnonymousFunction(), FirModifiableFunction, FirAbstractAnnotatedElement { override var resolvePhase: FirResolvePhase = FirResolvePhase.DECLARATIONS override val annotations: MutableList = mutableListOf() override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousInitializerImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousInitializerImpl.kt index af1c22fa04e..b76f464fcf9 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousInitializerImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousInitializerImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer import org.jetbrains.kotlin.fir.declarations.FirResolvePhase @@ -22,7 +21,7 @@ class FirAnonymousInitializerImpl( override val psi: PsiElement?, override val session: FirSession, override var body: FirBlock? -) : FirPureAbstractElement(), FirAnonymousInitializer { +) : FirAnonymousInitializer() { override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override fun acceptChildren(visitor: FirVisitor, data: D) { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt index cb1b5ea6523..8ed5637291b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement import org.jetbrains.kotlin.descriptors.ClassKind -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirAnonymousObject import org.jetbrains.kotlin.fir.declarations.FirDeclaration @@ -26,7 +25,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirAnonymousObjectImpl( override val psi: PsiElement?, override val session: FirSession -) : FirPureAbstractElement(), FirAnonymousObject, FirModifiableClass, FirAbstractAnnotatedElement { +) : FirAnonymousObject(), FirModifiableClass, FirAbstractAnnotatedElement { override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override val classKind: ClassKind get() = ClassKind.OBJECT override val superTypeRefs: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt index 4e78557e09b..fda543b8c14 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -37,7 +36,7 @@ open class FirConstructorImpl( override var receiverTypeRef: FirTypeRef?, override var status: FirDeclarationStatus, override val symbol: FirConstructorSymbol -) : FirPureAbstractElement(), FirConstructor, FirModifiableConstructor, FirAbstractAnnotatedElement { +) : FirConstructor, FirModifiableConstructor(), FirAbstractAnnotatedElement { override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference() override val typeParameters: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt index 7471460bca8..b7e1333c019 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor import org.jetbrains.kotlin.fir.declarations.FirResolvePhase @@ -30,7 +29,7 @@ class FirDefaultSetterValueParameter( override val session: FirSession, override var returnTypeRef: FirTypeRef, override val symbol: FirVariableSymbol -) : FirPureAbstractElement(), FirValueParameter, FirAbstractAnnotatedElement { +) : FirValueParameter(), FirAbstractAnnotatedElement { override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override var receiverTypeRef: FirTypeRef? = null override val name: Name = Name.identifier("value") diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt index 8da136aae60..50f82bb8923 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt @@ -9,7 +9,6 @@ import com.intellij.psi.PsiElement import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -36,7 +35,7 @@ class FirEnumEntryImpl( override val session: FirSession, override val name: Name, override val symbol: FirClassSymbol -) : FirPureAbstractElement(), FirEnumEntry, FirModifiableClass, FirModifiableTypeParametersOwner, FirAbstractAnnotatedElement { +) : FirEnumEntry(), FirModifiableClass, FirModifiableTypeParametersOwner, FirAbstractAnnotatedElement { override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override val annotations: MutableList = mutableListOf() override val typeParameters: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunctionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunctionImpl.kt index 9292565b484..28752506f5c 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunctionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunctionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirErrorFunction import org.jetbrains.kotlin.fir.declarations.FirResolvePhase @@ -32,7 +31,7 @@ class FirErrorFunctionImpl( override val session: FirSession, override val reason: String, override val symbol: FirErrorFunctionSymbol -) : FirPureAbstractElement(), FirErrorFunction, FirAbstractAnnotatedElement { +) : FirErrorFunction(), FirAbstractAnnotatedElement { override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override val annotations: MutableList = mutableListOf() override var returnTypeRef: FirTypeRef = FirErrorTypeRefImpl(null, reason) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirFileImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirFileImpl.kt index c89c68bf5c6..67e8826d5c9 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirFileImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirFileImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirFile @@ -27,7 +26,7 @@ class FirFileImpl( override val session: FirSession, override val name: String, override val packageFqName: FqName -) : FirPureAbstractElement(), FirFile, FirAbstractAnnotatedElement { +) : FirFile(), FirAbstractAnnotatedElement { override val annotations: MutableList = mutableListOf() override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override val imports: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirImportImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirImportImpl.kt index 266cf2f1ecd..e296d3b5c23 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirImportImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirImportImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.declarations.FirImport import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name @@ -22,7 +21,7 @@ class FirImportImpl( override val importedFqName: FqName?, override val isAllUnder: Boolean, override val aliasName: Name? -) : FirPureAbstractElement(), FirImport { +) : FirImport() { override fun acceptChildren(visitor: FirVisitor, data: D) {} override fun transformChildren(transformer: FirTransformer, data: D): FirImportImpl { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirModifiableConstructor.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirModifiableConstructor.kt index ce7114af3c3..5f8dab280f5 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirModifiableConstructor.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirModifiableConstructor.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -29,30 +30,30 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirModifiableConstructor : FirConstructor, FirModifiableTypeParametersOwner, FirAbstractAnnotatedElement { - override val psi: PsiElement? - override val session: FirSession - override var resolvePhase: FirResolvePhase - override var returnTypeRef: FirTypeRef - override var receiverTypeRef: FirTypeRef? - override var controlFlowGraphReference: FirControlFlowGraphReference - override val typeParameters: MutableList - override val valueParameters: MutableList - override var body: FirBlock? - override val name: Name - override var status: FirDeclarationStatus - override var containerSource: DeserializedContainerSource? - override val annotations: MutableList - override val symbol: FirConstructorSymbol - override var delegatedConstructor: FirDelegatedConstructorCall? - override val isPrimary: Boolean - override fun transformChildren(transformer: FirTransformer, data: D): FirModifiableConstructor +abstract class FirModifiableConstructor : FirPureAbstractElement(), FirConstructor, FirModifiableTypeParametersOwner, FirAbstractAnnotatedElement { + abstract override val psi: PsiElement? + abstract override val session: FirSession + abstract override var resolvePhase: FirResolvePhase + abstract override var returnTypeRef: FirTypeRef + abstract override var receiverTypeRef: FirTypeRef? + abstract override var controlFlowGraphReference: FirControlFlowGraphReference + abstract override val typeParameters: MutableList + abstract override val valueParameters: MutableList + abstract override var body: FirBlock? + abstract override val name: Name + abstract override var status: FirDeclarationStatus + abstract override var containerSource: DeserializedContainerSource? + abstract override val annotations: MutableList + abstract override val symbol: FirConstructorSymbol + abstract override var delegatedConstructor: FirDelegatedConstructorCall? + abstract override val isPrimary: Boolean + abstract override fun transformChildren(transformer: FirTransformer, data: D): FirModifiableConstructor - override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirModifiableConstructor + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirModifiableConstructor - override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirModifiableConstructor + abstract override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirModifiableConstructor - override fun transformValueParameters(transformer: FirTransformer, data: D): FirModifiableConstructor + abstract override fun transformValueParameters(transformer: FirTransformer, data: D): FirModifiableConstructor - override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt index 7899bf39032..184f6393559 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement import org.jetbrains.kotlin.descriptors.Modality -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor @@ -35,7 +34,7 @@ open class FirPropertyAccessorImpl( override val symbol: FirPropertyAccessorSymbol, override val isGetter: Boolean, override var status: FirDeclarationStatus -) : FirPureAbstractElement(), FirPropertyAccessor, FirModifiableFunction, FirAbstractAnnotatedElement { +) : FirPropertyAccessor(), FirModifiableFunction, FirAbstractAnnotatedElement { override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override var receiverTypeRef: FirTypeRef? = null override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt index 80274d6ed0a..fc64899d77e 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirProperty @@ -43,7 +42,7 @@ class FirPropertyImpl( override val symbol: FirPropertySymbol, override val isLocal: Boolean, override var status: FirDeclarationStatus -) : FirPureAbstractElement(), FirProperty, FirModifiableVariable, FirModifiableTypeParametersOwner, FirAbstractAnnotatedElement { +) : FirProperty(), FirModifiableVariable, FirModifiableTypeParametersOwner, FirAbstractAnnotatedElement { override var resolvePhase: FirResolvePhase = if (isLocal) FirResolvePhase.DECLARATIONS else FirResolvePhase.RAW_FIR override val delegateFieldSymbol: FirDelegateFieldSymbol? = delegate?.let { FirDelegateFieldSymbol(symbol.callableId) } override val isVal: Boolean get() = !isVar diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirResolvedImportImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirResolvedImportImpl.kt index 39f4a8cda01..fa16de422ad 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirResolvedImportImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirResolvedImportImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.declarations.FirImport import org.jetbrains.kotlin.fir.declarations.FirResolvedImport import org.jetbrains.kotlin.name.ClassId @@ -23,7 +22,7 @@ class FirResolvedImportImpl( override var delegate: FirImport, override val packageFqName: FqName, override val relativeClassName: FqName? -) : FirPureAbstractElement(), FirResolvedImport { +) : FirResolvedImport() { override val psi: PsiElement? get() = delegate.psi override val importedFqName: FqName? get() = delegate.importedFqName override val isAllUnder: Boolean get() = delegate.isAllUnder diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt index aa3e6253818..8d8eb2fafca 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement import org.jetbrains.kotlin.descriptors.ClassKind -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -36,7 +35,7 @@ class FirSealedClassImpl( override var status: FirDeclarationStatus, override val classKind: ClassKind, override val symbol: FirClassSymbol -) : FirPureAbstractElement(), FirSealedClass, FirModifiableRegularClass, FirAbstractAnnotatedElement { +) : FirSealedClass(), FirModifiableRegularClass, FirAbstractAnnotatedElement { override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override val annotations: MutableList = mutableListOf() override val typeParameters: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt index d00518d4947..8e124520994 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirResolvePhase @@ -37,7 +36,7 @@ open class FirSimpleFunctionImpl( override val name: Name, override var status: FirDeclarationStatus, override val symbol: FirFunctionSymbol -) : FirPureAbstractElement(), FirSimpleFunction, FirModifiableFunction, FirModifiableTypeParametersOwner, FirAbstractAnnotatedElement { +) : FirSimpleFunction(), FirModifiableFunction, FirModifiableTypeParametersOwner, FirAbstractAnnotatedElement { override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference() override val typeParameters: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirTypeAliasImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirTypeAliasImpl.kt index 3a511502b09..43832cfe484 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirTypeAliasImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirTypeAliasImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirResolvePhase @@ -32,7 +31,7 @@ class FirTypeAliasImpl( override var status: FirDeclarationStatus, override val symbol: FirTypeAliasSymbol, override var expandedTypeRef: FirTypeRef -) : FirPureAbstractElement(), FirTypeAlias, FirModifiableTypeParametersOwner, FirAbstractAnnotatedElement { +) : FirTypeAlias(), FirModifiableTypeParametersOwner, FirAbstractAnnotatedElement { override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override val typeParameters: MutableList = mutableListOf() override var supertypesComputationStatus: SupertypesComputationStatus = SupertypesComputationStatus.NOT_COMPUTED diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirTypeParameterImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirTypeParameterImpl.kt index 87f6b472430..7380df6b292 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirTypeParameterImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirTypeParameterImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirTypeParameter @@ -30,7 +29,7 @@ class FirTypeParameterImpl( override val symbol: FirTypeParameterSymbol, override val variance: Variance, override val isReified: Boolean -) : FirPureAbstractElement(), FirTypeParameter, FirAbstractAnnotatedElement { +) : FirTypeParameter(), FirAbstractAnnotatedElement { override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override val bounds: MutableList = mutableListOf() override val annotations: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt index 6cadf8cd867..3057a022d18 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.declarations.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor import org.jetbrains.kotlin.fir.declarations.FirResolvePhase @@ -35,7 +34,7 @@ open class FirValueParameterImpl( override val isCrossinline: Boolean, override val isNoinline: Boolean, override val isVararg: Boolean -) : FirPureAbstractElement(), FirValueParameter, FirModifiableVariable, FirAbstractAnnotatedElement { +) : FirValueParameter(), FirModifiableVariable, FirAbstractAnnotatedElement { override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override var receiverTypeRef: FirTypeRef? = null override var initializer: FirExpression? = null diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt index 739eb39f2b1..450bae0a947 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -15,15 +16,15 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirAnnotationCall : FirExpression, FirCall { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val arguments: List - val useSiteTarget: AnnotationUseSiteTarget? - val annotationTypeRef: FirTypeRef +abstract class FirAnnotationCall : FirPureAbstractElement(), FirExpression, FirCall { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val arguments: List + abstract val useSiteTarget: AnnotationUseSiteTarget? + abstract val annotationTypeRef: FirTypeRef override fun accept(visitor: FirVisitor, data: D): R = visitor.visitAnnotationCall(this, data) - override fun transformArguments(transformer: FirTransformer, data: D): FirAnnotationCall + abstract override fun transformArguments(transformer: FirTransformer, data: D): FirAnnotationCall } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirArrayOfCall.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirArrayOfCall.kt index f0fef913ac2..19687caeff7 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirArrayOfCall.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirArrayOfCall.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -14,13 +15,13 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirArrayOfCall : FirExpression, FirCall { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val arguments: List +abstract class FirArrayOfCall : FirPureAbstractElement(), FirExpression, FirCall { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val arguments: List override fun accept(visitor: FirVisitor, data: D): R = visitor.visitArrayOfCall(this, data) - override fun transformArguments(transformer: FirTransformer, data: D): FirArrayOfCall + abstract override fun transformArguments(transformer: FirTransformer, data: D): FirArrayOfCall } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirArraySetCall.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirArraySetCall.kt index fff3ef9f935..a4afdce0270 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirArraySetCall.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirArraySetCall.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.visitors.* @@ -14,33 +15,33 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirArraySetCall : FirQualifiedAccess, FirCall { - override val psi: PsiElement? - override val annotations: List - override val safe: Boolean - override val explicitReceiver: FirExpression? - override val dispatchReceiver: FirExpression - override val extensionReceiver: FirExpression - override val calleeReference: FirReference - override val arguments: List - val rValue: FirExpression - val operation: FirOperation - val lValue: FirReference - val indexes: List +abstract class FirArraySetCall : FirPureAbstractElement(), FirQualifiedAccess, FirCall { + abstract override val psi: PsiElement? + abstract override val annotations: List + abstract override val safe: Boolean + abstract override val explicitReceiver: FirExpression? + abstract override val dispatchReceiver: FirExpression + abstract override val extensionReceiver: FirExpression + abstract override val calleeReference: FirReference + abstract override val arguments: List + abstract val rValue: FirExpression + abstract val operation: FirOperation + abstract val lValue: FirReference + abstract val indexes: List override fun accept(visitor: FirVisitor, data: D): R = visitor.visitArraySetCall(this, data) - override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirArraySetCall + abstract override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirArraySetCall - override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirArraySetCall + abstract override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirArraySetCall - override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirArraySetCall + abstract override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirArraySetCall - override fun transformCalleeReference(transformer: FirTransformer, data: D): FirArraySetCall + abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirArraySetCall - override fun transformArguments(transformer: FirTransformer, data: D): FirArraySetCall + abstract override fun transformArguments(transformer: FirTransformer, data: D): FirArraySetCall - fun transformRValue(transformer: FirTransformer, data: D): FirArraySetCall + abstract fun transformRValue(transformer: FirTransformer, data: D): FirArraySetCall - fun transformIndexes(transformer: FirTransformer, data: D): FirArraySetCall + abstract fun transformIndexes(transformer: FirTransformer, data: D): FirArraySetCall } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirBinaryLogicExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirBinaryLogicExpression.kt index ba94d895e34..72016705576 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirBinaryLogicExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirBinaryLogicExpression.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -14,19 +15,19 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirBinaryLogicExpression : FirExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - val leftOperand: FirExpression - val rightOperand: FirExpression - val kind: LogicOperationKind +abstract class FirBinaryLogicExpression : FirPureAbstractElement(), FirExpression { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract val leftOperand: FirExpression + abstract val rightOperand: FirExpression + abstract val kind: LogicOperationKind override fun accept(visitor: FirVisitor, data: D): R = visitor.visitBinaryLogicExpression(this, data) - fun transformLeftOperand(transformer: FirTransformer, data: D): FirBinaryLogicExpression + abstract fun transformLeftOperand(transformer: FirTransformer, data: D): FirBinaryLogicExpression - fun transformRightOperand(transformer: FirTransformer, data: D): FirBinaryLogicExpression + abstract fun transformRightOperand(transformer: FirTransformer, data: D): FirBinaryLogicExpression - fun transformOtherChildren(transformer: FirTransformer, data: D): FirBinaryLogicExpression + abstract fun transformOtherChildren(transformer: FirTransformer, data: D): FirBinaryLogicExpression } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirBlock.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirBlock.kt index 738b017b594..90483a04d14 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirBlock.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirBlock.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -14,13 +15,13 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirBlock : FirExpression { - override val psi: PsiElement? - override val annotations: List - val statements: List - override val typeRef: FirTypeRef +abstract class FirBlock : FirPureAbstractElement(), FirExpression { + abstract override val psi: PsiElement? + abstract override val annotations: List + abstract val statements: List + abstract override val typeRef: FirTypeRef override fun accept(visitor: FirVisitor, data: D): R = visitor.visitBlock(this, data) - override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirBreakExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirBreakExpression.kt index 463326bd5fd..a291af1c443 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirBreakExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirBreakExpression.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirTarget import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -15,11 +16,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirBreakExpression : FirLoopJump { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val target: FirTarget +abstract class FirBreakExpression : FirPureAbstractElement(), FirLoopJump { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val target: FirTarget override fun accept(visitor: FirVisitor, data: D): R = visitor.visitBreakExpression(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirCallableReferenceAccess.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirCallableReferenceAccess.kt index 7e7c90b71f2..b65daa2b939 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirCallableReferenceAccess.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirCallableReferenceAccess.kt @@ -15,23 +15,23 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirCallableReferenceAccess : FirQualifiedAccessExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val safe: Boolean - override val explicitReceiver: FirExpression? - override val dispatchReceiver: FirExpression - override val extensionReceiver: FirExpression - override val calleeReference: FirReference +abstract class FirCallableReferenceAccess : FirQualifiedAccessExpression() { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val safe: Boolean + abstract override val explicitReceiver: FirExpression? + abstract override val dispatchReceiver: FirExpression + abstract override val extensionReceiver: FirExpression + abstract override val calleeReference: FirReference override fun accept(visitor: FirVisitor, data: D): R = visitor.visitCallableReferenceAccess(this, data) - override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirCallableReferenceAccess + abstract override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirCallableReferenceAccess - override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirCallableReferenceAccess + abstract override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirCallableReferenceAccess - override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirCallableReferenceAccess + abstract override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirCallableReferenceAccess - override fun transformCalleeReference(transformer: FirTransformer, data: D): FirCallableReferenceAccess + abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirCallableReferenceAccess } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirCatch.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirCatch.kt index d134a687c90..c3f3f651928 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirCatch.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirCatch.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.FirElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.visitors.* @@ -15,16 +16,16 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirCatch : FirElement { - override val psi: PsiElement? - val parameter: FirValueParameter - val block: FirBlock +abstract class FirCatch : FirPureAbstractElement(), FirElement { + abstract override val psi: PsiElement? + abstract val parameter: FirValueParameter + abstract val block: FirBlock override fun accept(visitor: FirVisitor, data: D): R = visitor.visitCatch(this, data) - fun transformParameter(transformer: FirTransformer, data: D): FirCatch + abstract fun transformParameter(transformer: FirTransformer, data: D): FirCatch - fun transformBlock(transformer: FirTransformer, data: D): FirCatch + abstract fun transformBlock(transformer: FirTransformer, data: D): FirCatch - fun transformOtherChildren(transformer: FirTransformer, data: D): FirCatch + abstract fun transformOtherChildren(transformer: FirTransformer, data: D): FirCatch } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirClassReferenceExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirClassReferenceExpression.kt index 354cd9cb964..56b683832a1 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirClassReferenceExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirClassReferenceExpression.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -14,11 +15,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirClassReferenceExpression : FirExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - val classTypeRef: FirTypeRef +abstract class FirClassReferenceExpression : FirPureAbstractElement(), FirExpression { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract val classTypeRef: FirTypeRef override fun accept(visitor: FirVisitor, data: D): R = visitor.visitClassReferenceExpression(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirComponentCall.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirComponentCall.kt index 834fbadcf31..80ca6041fb4 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirComponentCall.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirComponentCall.kt @@ -16,28 +16,28 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirComponentCall : FirFunctionCall { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val safe: Boolean - override val dispatchReceiver: FirExpression - override val extensionReceiver: FirExpression - override val arguments: List - override val typeArguments: List - override val calleeReference: FirNamedReference - override val explicitReceiver: FirExpression - val componentIndex: Int +abstract class FirComponentCall : FirFunctionCall() { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val safe: Boolean + abstract override val dispatchReceiver: FirExpression + abstract override val extensionReceiver: FirExpression + abstract override val arguments: List + abstract override val typeArguments: List + abstract override val calleeReference: FirNamedReference + abstract override val explicitReceiver: FirExpression + abstract val componentIndex: Int override fun accept(visitor: FirVisitor, data: D): R = visitor.visitComponentCall(this, data) - override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirComponentCall + abstract override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirComponentCall - override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirComponentCall + abstract override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirComponentCall - override fun transformArguments(transformer: FirTransformer, data: D): FirComponentCall + abstract override fun transformArguments(transformer: FirTransformer, data: D): FirComponentCall - override fun transformCalleeReference(transformer: FirTransformer, data: D): FirComponentCall + abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirComponentCall - override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirComponentCall + abstract override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirComponentCall } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirConstExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirConstExpression.kt index 3a8259b5e50..b93b270dd6c 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirConstExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirConstExpression.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.ir.expressions.IrConstKind import org.jetbrains.kotlin.fir.visitors.* @@ -15,12 +16,12 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirConstExpression : FirExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - val kind: IrConstKind - val value: T +abstract class FirConstExpression : FirPureAbstractElement(), FirExpression { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract val kind: IrConstKind + abstract val value: T override fun accept(visitor: FirVisitor, data: D): R = visitor.visitConstExpression(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirContinueExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirContinueExpression.kt index 6a3e24285e0..6b4ef1fd16b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirContinueExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirContinueExpression.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirTarget import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -15,11 +16,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirContinueExpression : FirLoopJump { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val target: FirTarget +abstract class FirContinueExpression : FirPureAbstractElement(), FirLoopJump { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val target: FirTarget override fun accept(visitor: FirVisitor, data: D): R = visitor.visitContinueExpression(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirDelegatedConstructorCall.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirDelegatedConstructorCall.kt index 76b487fc154..76ad568bf6a 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirDelegatedConstructorCall.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirDelegatedConstructorCall.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -15,18 +16,18 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirDelegatedConstructorCall : FirCall { - override val psi: PsiElement? - override val annotations: List - override val arguments: List - val constructedTypeRef: FirTypeRef - val isThis: Boolean - val isSuper: Boolean - val calleeReference: FirReference +abstract class FirDelegatedConstructorCall : FirPureAbstractElement(), FirCall { + abstract override val psi: PsiElement? + abstract override val annotations: List + abstract override val arguments: List + abstract val constructedTypeRef: FirTypeRef + abstract val isThis: Boolean + abstract val isSuper: Boolean + abstract val calleeReference: FirReference override fun accept(visitor: FirVisitor, data: D): R = visitor.visitDelegatedConstructorCall(this, data) - override fun transformArguments(transformer: FirTransformer, data: D): FirDelegatedConstructorCall + abstract override fun transformArguments(transformer: FirTransformer, data: D): FirDelegatedConstructorCall - fun transformCalleeReference(transformer: FirTransformer, data: D): FirDelegatedConstructorCall + abstract fun transformCalleeReference(transformer: FirTransformer, data: D): FirDelegatedConstructorCall } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirDoWhileLoop.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirDoWhileLoop.kt index 1edea86c79f..a4b118de46f 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirDoWhileLoop.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirDoWhileLoop.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.FirLabel +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.visitors.* /* @@ -14,18 +15,18 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirDoWhileLoop : FirLoop { - override val psi: PsiElement? - override val annotations: List - override val block: FirBlock - override val condition: FirExpression - override val label: FirLabel? +abstract class FirDoWhileLoop : FirPureAbstractElement(), FirLoop { + abstract override val psi: PsiElement? + abstract override val annotations: List + abstract override val block: FirBlock + abstract override val condition: FirExpression + abstract override val label: FirLabel? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitDoWhileLoop(this, data) - override fun transformBlock(transformer: FirTransformer, data: D): FirDoWhileLoop + abstract override fun transformBlock(transformer: FirTransformer, data: D): FirDoWhileLoop - override fun transformCondition(transformer: FirTransformer, data: D): FirDoWhileLoop + abstract override fun transformCondition(transformer: FirTransformer, data: D): FirDoWhileLoop - override fun transformOtherChildren(transformer: FirTransformer, data: D): FirDoWhileLoop + abstract override fun transformOtherChildren(transformer: FirTransformer, data: D): FirDoWhileLoop } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirErrorExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirErrorExpression.kt index 41617ae7133..a7413dc2b4f 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirErrorExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirErrorExpression.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -14,11 +15,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirErrorExpression : FirExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - val reason: String +abstract class FirErrorExpression : FirPureAbstractElement(), FirExpression { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract val reason: String override fun accept(visitor: FirVisitor, data: D): R = visitor.visitErrorExpression(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionWithSmartcast.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionWithSmartcast.kt index 5fb069639ab..191d85c126d 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionWithSmartcast.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionWithSmartcast.kt @@ -16,26 +16,26 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirExpressionWithSmartcast : FirQualifiedAccessExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val safe: Boolean - override val explicitReceiver: FirExpression? - override val dispatchReceiver: FirExpression - override val extensionReceiver: FirExpression - override val calleeReference: FirReference - val originalExpression: FirQualifiedAccessExpression - val typesFromSmartcast: Collection - val originalType: FirTypeRef +abstract class FirExpressionWithSmartcast : FirQualifiedAccessExpression() { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val safe: Boolean + abstract override val explicitReceiver: FirExpression? + abstract override val dispatchReceiver: FirExpression + abstract override val extensionReceiver: FirExpression + abstract override val calleeReference: FirReference + abstract val originalExpression: FirQualifiedAccessExpression + abstract val typesFromSmartcast: Collection + abstract val originalType: FirTypeRef override fun accept(visitor: FirVisitor, data: D): R = visitor.visitExpressionWithSmartcast(this, data) - override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcast + abstract override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcast - override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcast + abstract override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcast - override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcast + abstract override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcast - override fun transformCalleeReference(transformer: FirTransformer, data: D): FirExpressionWithSmartcast + abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirExpressionWithSmartcast } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirFunctionCall.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirFunctionCall.kt index 7fc29be55d4..9c07141225f 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirFunctionCall.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirFunctionCall.kt @@ -16,27 +16,27 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirFunctionCall : FirQualifiedAccessExpression, FirCall { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val safe: Boolean - override val explicitReceiver: FirExpression? - override val dispatchReceiver: FirExpression - override val extensionReceiver: FirExpression - override val arguments: List - val typeArguments: List - override val calleeReference: FirNamedReference +abstract class FirFunctionCall : FirQualifiedAccessExpression(), FirCall { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val safe: Boolean + abstract override val explicitReceiver: FirExpression? + abstract override val dispatchReceiver: FirExpression + abstract override val extensionReceiver: FirExpression + abstract override val arguments: List + abstract val typeArguments: List + abstract override val calleeReference: FirNamedReference override fun accept(visitor: FirVisitor, data: D): R = visitor.visitFunctionCall(this, data) - override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirFunctionCall + abstract override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirFunctionCall - override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirFunctionCall + abstract override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirFunctionCall - override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirFunctionCall + abstract override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirFunctionCall - override fun transformArguments(transformer: FirTransformer, data: D): FirFunctionCall + abstract override fun transformArguments(transformer: FirTransformer, data: D): FirFunctionCall - override fun transformCalleeReference(transformer: FirTransformer, data: D): FirFunctionCall + abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirFunctionCall } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirGetClassCall.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirGetClassCall.kt index b11d8044f35..bde8486fd86 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirGetClassCall.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirGetClassCall.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -14,14 +15,14 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirGetClassCall : FirExpression, FirCall { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val arguments: List - val argument: FirExpression +abstract class FirGetClassCall : FirPureAbstractElement(), FirExpression, FirCall { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val arguments: List + abstract val argument: FirExpression override fun accept(visitor: FirVisitor, data: D): R = visitor.visitGetClassCall(this, data) - override fun transformArguments(transformer: FirTransformer, data: D): FirGetClassCall + abstract override fun transformArguments(transformer: FirTransformer, data: D): FirGetClassCall } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirLambdaArgumentExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirLambdaArgumentExpression.kt index 9c501d4b659..55bbabb9d5f 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirLambdaArgumentExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirLambdaArgumentExpression.kt @@ -14,12 +14,12 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirLambdaArgumentExpression : FirWrappedArgumentExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val expression: FirExpression - override val isSpread: Boolean +abstract class FirLambdaArgumentExpression : FirWrappedArgumentExpression() { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val expression: FirExpression + abstract override val isSpread: Boolean override fun accept(visitor: FirVisitor, data: D): R = visitor.visitLambdaArgumentExpression(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirNamedArgumentExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirNamedArgumentExpression.kt index e16cdfbb19d..d1d20f4da9d 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirNamedArgumentExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirNamedArgumentExpression.kt @@ -15,13 +15,13 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirNamedArgumentExpression : FirWrappedArgumentExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val expression: FirExpression - override val isSpread: Boolean - val name: Name +abstract class FirNamedArgumentExpression : FirWrappedArgumentExpression() { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val expression: FirExpression + abstract override val isSpread: Boolean + abstract val name: Name override fun accept(visitor: FirVisitor, data: D): R = visitor.visitNamedArgumentExpression(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirOperatorCall.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirOperatorCall.kt index 359bc6c3256..c670da255cb 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirOperatorCall.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirOperatorCall.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -14,14 +15,14 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirOperatorCall : FirExpression, FirCall { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val arguments: List - val operation: FirOperation +abstract class FirOperatorCall : FirPureAbstractElement(), FirExpression, FirCall { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val arguments: List + abstract val operation: FirOperation override fun accept(visitor: FirVisitor, data: D): R = visitor.visitOperatorCall(this, data) - override fun transformArguments(transformer: FirTransformer, data: D): FirOperatorCall + abstract override fun transformArguments(transformer: FirTransformer, data: D): FirOperatorCall } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirQualifiedAccessExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirQualifiedAccessExpression.kt index a4d990ab2b4..1d244f6b56a 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirQualifiedAccessExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirQualifiedAccessExpression.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -15,23 +16,23 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirQualifiedAccessExpression : FirExpression, FirQualifiedAccess { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val safe: Boolean - override val explicitReceiver: FirExpression? - override val dispatchReceiver: FirExpression - override val extensionReceiver: FirExpression - override val calleeReference: FirReference +abstract class FirQualifiedAccessExpression : FirPureAbstractElement(), FirExpression, FirQualifiedAccess { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val safe: Boolean + abstract override val explicitReceiver: FirExpression? + abstract override val dispatchReceiver: FirExpression + abstract override val extensionReceiver: FirExpression + abstract override val calleeReference: FirReference override fun accept(visitor: FirVisitor, data: D): R = visitor.visitQualifiedAccessExpression(this, data) - override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirQualifiedAccessExpression + abstract override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirQualifiedAccessExpression - override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirQualifiedAccessExpression + abstract override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirQualifiedAccessExpression - override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirQualifiedAccessExpression + abstract override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirQualifiedAccessExpression - override fun transformCalleeReference(transformer: FirTransformer, data: D): FirQualifiedAccessExpression + abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirQualifiedAccessExpression } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirResolvedQualifier.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirResolvedQualifier.kt index fdaf28861cb..e33c1813668 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirResolvedQualifier.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirResolvedQualifier.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName @@ -16,13 +17,13 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirResolvedQualifier : FirExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - val packageFqName: FqName - val relativeClassFqName: FqName? - val classId: ClassId? +abstract class FirResolvedQualifier : FirPureAbstractElement(), FirExpression { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract val packageFqName: FqName + abstract val relativeClassFqName: FqName? + abstract val classId: ClassId? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitResolvedQualifier(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirReturnExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirReturnExpression.kt index 82a361cc5bd..c7c06be6711 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirReturnExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirReturnExpression.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirTarget import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -16,12 +17,12 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirReturnExpression : FirJump> { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val target: FirTarget> - val result: FirExpression +abstract class FirReturnExpression : FirPureAbstractElement(), FirJump> { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val target: FirTarget> + abstract val result: FirExpression override fun accept(visitor: FirVisitor, data: D): R = visitor.visitReturnExpression(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirSpreadArgumentExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirSpreadArgumentExpression.kt index baf03a5aadb..e1402f0d4ca 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirSpreadArgumentExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirSpreadArgumentExpression.kt @@ -14,12 +14,12 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirSpreadArgumentExpression : FirWrappedArgumentExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val expression: FirExpression - override val isSpread: Boolean +abstract class FirSpreadArgumentExpression : FirWrappedArgumentExpression() { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val expression: FirExpression + abstract override val isSpread: Boolean override fun accept(visitor: FirVisitor, data: D): R = visitor.visitSpreadArgumentExpression(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirStringConcatenationCall.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirStringConcatenationCall.kt index a2f62f5beb3..21c271e2d82 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirStringConcatenationCall.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirStringConcatenationCall.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -14,13 +15,13 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirStringConcatenationCall : FirCall, FirExpression { - override val psi: PsiElement? - override val annotations: List - override val arguments: List - override val typeRef: FirTypeRef +abstract class FirStringConcatenationCall : FirPureAbstractElement(), FirCall, FirExpression { + abstract override val psi: PsiElement? + abstract override val annotations: List + abstract override val arguments: List + abstract override val typeRef: FirTypeRef override fun accept(visitor: FirVisitor, data: D): R = visitor.visitStringConcatenationCall(this, data) - override fun transformArguments(transformer: FirTransformer, data: D): FirStringConcatenationCall + abstract override fun transformArguments(transformer: FirTransformer, data: D): FirStringConcatenationCall } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirThisReceiverExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirThisReceiverExpression.kt index b33d2d668e0..a5e8baf22af 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirThisReceiverExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirThisReceiverExpression.kt @@ -15,23 +15,23 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirThisReceiverExpression : FirQualifiedAccessExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val safe: Boolean - override val explicitReceiver: FirExpression? - override val dispatchReceiver: FirExpression - override val extensionReceiver: FirExpression - override val calleeReference: FirThisReference +abstract class FirThisReceiverExpression : FirQualifiedAccessExpression() { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val safe: Boolean + abstract override val explicitReceiver: FirExpression? + abstract override val dispatchReceiver: FirExpression + abstract override val extensionReceiver: FirExpression + abstract override val calleeReference: FirThisReference override fun accept(visitor: FirVisitor, data: D): R = visitor.visitThisReceiverExpression(this, data) - override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirThisReceiverExpression + abstract override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirThisReceiverExpression - override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirThisReceiverExpression + abstract override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirThisReceiverExpression - override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirThisReceiverExpression + abstract override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirThisReceiverExpression - override fun transformCalleeReference(transformer: FirTransformer, data: D): FirThisReceiverExpression + abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirThisReceiverExpression } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirThrowExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirThrowExpression.kt index 5714ed651fa..b6878c0aa29 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirThrowExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirThrowExpression.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -14,11 +15,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirThrowExpression : FirExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - val exception: FirExpression +abstract class FirThrowExpression : FirPureAbstractElement(), FirExpression { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract val exception: FirExpression override fun accept(visitor: FirVisitor, data: D): R = visitor.visitThrowExpression(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirTryExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirTryExpression.kt index 2fc2ef1c4fd..51b41e13fe1 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirTryExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirTryExpression.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -15,24 +16,24 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirTryExpression : FirExpression, FirResolvable { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val calleeReference: FirReference - val tryBlock: FirBlock - val catches: List - val finallyBlock: FirBlock? +abstract class FirTryExpression : FirPureAbstractElement(), FirExpression, FirResolvable { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val calleeReference: FirReference + abstract val tryBlock: FirBlock + abstract val catches: List + abstract val finallyBlock: FirBlock? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitTryExpression(this, data) - override fun transformCalleeReference(transformer: FirTransformer, data: D): FirTryExpression + abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirTryExpression - fun transformTryBlock(transformer: FirTransformer, data: D): FirTryExpression + abstract fun transformTryBlock(transformer: FirTransformer, data: D): FirTryExpression - fun transformCatches(transformer: FirTransformer, data: D): FirTryExpression + abstract fun transformCatches(transformer: FirTransformer, data: D): FirTryExpression - fun transformFinallyBlock(transformer: FirTransformer, data: D): FirTryExpression + abstract fun transformFinallyBlock(transformer: FirTransformer, data: D): FirTryExpression - fun transformOtherChildren(transformer: FirTransformer, data: D): FirTryExpression + abstract fun transformOtherChildren(transformer: FirTransformer, data: D): FirTryExpression } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirTypeOperatorCall.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirTypeOperatorCall.kt index 75019521aa3..43fead65c5b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirTypeOperatorCall.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirTypeOperatorCall.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -14,15 +15,15 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirTypeOperatorCall : FirExpression, FirCall { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val arguments: List - val operation: FirOperation - val conversionTypeRef: FirTypeRef +abstract class FirTypeOperatorCall : FirPureAbstractElement(), FirExpression, FirCall { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val arguments: List + abstract val operation: FirOperation + abstract val conversionTypeRef: FirTypeRef override fun accept(visitor: FirVisitor, data: D): R = visitor.visitTypeOperatorCall(this, data) - override fun transformArguments(transformer: FirTransformer, data: D): FirTypeOperatorCall + abstract override fun transformArguments(transformer: FirTransformer, data: D): FirTypeOperatorCall } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirVariableAssignment.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirVariableAssignment.kt index ed6ed4e36e2..201e34eeee9 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirVariableAssignment.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirVariableAssignment.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.visitors.* @@ -14,27 +15,27 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirVariableAssignment : FirQualifiedAccess { - override val psi: PsiElement? - override val annotations: List - override val safe: Boolean - override val explicitReceiver: FirExpression? - override val dispatchReceiver: FirExpression - override val extensionReceiver: FirExpression - override val calleeReference: FirReference - val lValue: FirReference - val rValue: FirExpression - val operation: FirOperation +abstract class FirVariableAssignment : FirPureAbstractElement(), FirQualifiedAccess { + abstract override val psi: PsiElement? + abstract override val annotations: List + abstract override val safe: Boolean + abstract override val explicitReceiver: FirExpression? + abstract override val dispatchReceiver: FirExpression + abstract override val extensionReceiver: FirExpression + abstract override val calleeReference: FirReference + abstract val lValue: FirReference + abstract val rValue: FirExpression + abstract val operation: FirOperation override fun accept(visitor: FirVisitor, data: D): R = visitor.visitVariableAssignment(this, data) - override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirVariableAssignment + abstract override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirVariableAssignment - override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirVariableAssignment + abstract override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirVariableAssignment - override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirVariableAssignment + abstract override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirVariableAssignment - override fun transformCalleeReference(transformer: FirTransformer, data: D): FirVariableAssignment + abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirVariableAssignment - fun transformRValue(transformer: FirTransformer, data: D): FirVariableAssignment + abstract fun transformRValue(transformer: FirTransformer, data: D): FirVariableAssignment } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhenBranch.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhenBranch.kt index 32eee02fee0..9f36526d0e5 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhenBranch.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhenBranch.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.FirElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.visitors.* /* @@ -14,16 +15,16 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirWhenBranch : FirElement { - override val psi: PsiElement? - val condition: FirExpression - val result: FirBlock +abstract class FirWhenBranch : FirPureAbstractElement(), FirElement { + abstract override val psi: PsiElement? + abstract val condition: FirExpression + abstract val result: FirBlock override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWhenBranch(this, data) - fun transformCondition(transformer: FirTransformer, data: D): FirWhenBranch + abstract fun transformCondition(transformer: FirTransformer, data: D): FirWhenBranch - fun transformResult(transformer: FirTransformer, data: D): FirWhenBranch + abstract fun transformResult(transformer: FirTransformer, data: D): FirWhenBranch - fun transformOtherChildren(transformer: FirTransformer, data: D): FirWhenBranch + abstract fun transformOtherChildren(transformer: FirTransformer, data: D): FirWhenBranch } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhenExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhenExpression.kt index 5c8e9362309..239361049c5 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhenExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhenExpression.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.declarations.FirVariable import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -16,25 +17,25 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirWhenExpression : FirExpression, FirResolvable { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val calleeReference: FirReference - val subject: FirExpression? - val subjectVariable: FirVariable<*>? - val branches: List - val isExhaustive: Boolean +abstract class FirWhenExpression : FirPureAbstractElement(), FirExpression, FirResolvable { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val calleeReference: FirReference + abstract val subject: FirExpression? + abstract val subjectVariable: FirVariable<*>? + abstract val branches: List + abstract val isExhaustive: Boolean override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWhenExpression(this, data) - fun replaceIsExhaustive(newIsExhaustive: Boolean) + abstract fun replaceIsExhaustive(newIsExhaustive: Boolean) - override fun transformCalleeReference(transformer: FirTransformer, data: D): FirWhenExpression + abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirWhenExpression - fun transformSubject(transformer: FirTransformer, data: D): FirWhenExpression + abstract fun transformSubject(transformer: FirTransformer, data: D): FirWhenExpression - fun transformBranches(transformer: FirTransformer, data: D): FirWhenExpression + abstract fun transformBranches(transformer: FirTransformer, data: D): FirWhenExpression - fun transformOtherChildren(transformer: FirTransformer, data: D): FirWhenExpression + abstract fun transformOtherChildren(transformer: FirTransformer, data: D): FirWhenExpression } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhenSubjectExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhenSubjectExpression.kt index c8560743cac..56821e1548f 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhenSubjectExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhenSubjectExpression.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirWhenSubject import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -15,11 +16,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirWhenSubjectExpression : FirExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - val whenSubject: FirWhenSubject +abstract class FirWhenSubjectExpression : FirPureAbstractElement(), FirExpression { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract val whenSubject: FirWhenSubject override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWhenSubjectExpression(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhileLoop.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhileLoop.kt index 96fae5bdf84..55e7250d1cc 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhileLoop.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWhileLoop.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.FirLabel +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.visitors.* /* @@ -14,18 +15,18 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirWhileLoop : FirLoop { - override val psi: PsiElement? - override val annotations: List - override val label: FirLabel? - override val condition: FirExpression - override val block: FirBlock +abstract class FirWhileLoop : FirPureAbstractElement(), FirLoop { + abstract override val psi: PsiElement? + abstract override val annotations: List + abstract override val label: FirLabel? + abstract override val condition: FirExpression + abstract override val block: FirBlock override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWhileLoop(this, data) - override fun transformCondition(transformer: FirTransformer, data: D): FirWhileLoop + abstract override fun transformCondition(transformer: FirTransformer, data: D): FirWhileLoop - override fun transformBlock(transformer: FirTransformer, data: D): FirWhileLoop + abstract override fun transformBlock(transformer: FirTransformer, data: D): FirWhileLoop - override fun transformOtherChildren(transformer: FirTransformer, data: D): FirWhileLoop + abstract override fun transformOtherChildren(transformer: FirTransformer, data: D): FirWhileLoop } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWrappedArgumentExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWrappedArgumentExpression.kt index e33c7de7da4..6bdad5be3e0 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWrappedArgumentExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWrappedArgumentExpression.kt @@ -14,12 +14,12 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirWrappedArgumentExpression : FirWrappedExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val expression: FirExpression - val isSpread: Boolean +abstract class FirWrappedArgumentExpression : FirWrappedExpression() { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val expression: FirExpression + abstract val isSpread: Boolean override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWrappedArgumentExpression(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWrappedDelegateExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWrappedDelegateExpression.kt index f8259c759ec..97d0459a3d0 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWrappedDelegateExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWrappedDelegateExpression.kt @@ -14,12 +14,12 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirWrappedDelegateExpression : FirWrappedExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - override val expression: FirExpression - val delegateProvider: FirExpression +abstract class FirWrappedDelegateExpression : FirWrappedExpression() { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract override val expression: FirExpression + abstract val delegateProvider: FirExpression override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWrappedDelegateExpression(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWrappedExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWrappedExpression.kt index 02dd365e19c..147eb39c77d 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWrappedExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirWrappedExpression.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -14,11 +15,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirWrappedExpression : FirExpression { - override val psi: PsiElement? - override val typeRef: FirTypeRef - override val annotations: List - val expression: FirExpression +abstract class FirWrappedExpression : FirPureAbstractElement(), FirExpression { + abstract override val psi: PsiElement? + abstract override val typeRef: FirTypeRef + abstract override val annotations: List + abstract val expression: FirExpression override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWrappedExpression(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnnotationCallImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnnotationCallImpl.kt index 942cb24005e..fd8f95803d0 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnnotationCallImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnnotationCallImpl.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement @@ -23,7 +22,7 @@ class FirAnnotationCallImpl( override val psi: PsiElement?, override val useSiteTarget: AnnotationUseSiteTarget?, override var annotationTypeRef: FirTypeRef -) : FirPureAbstractElement(), FirAnnotationCall, FirCallWithArgumentList, FirAbstractAnnotatedElement { +) : FirAnnotationCall(), FirCallWithArgumentList, FirAbstractAnnotatedElement { override val typeRef: FirTypeRef get() = annotationTypeRef override val annotations: MutableList = mutableListOf() override val arguments: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirArrayOfCallImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirArrayOfCallImpl.kt index 3ffda29e9b2..9e67806b890 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirArrayOfCallImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirArrayOfCallImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirArrayOfCall import org.jetbrains.kotlin.fir.expressions.FirExpression @@ -22,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirArrayOfCallImpl( override val psi: PsiElement? -) : FirPureAbstractElement(), FirArrayOfCall, FirCallWithArgumentList, FirAbstractAnnotatedElement { +) : FirArrayOfCall(), FirCallWithArgumentList, FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override val annotations: MutableList = mutableListOf() override val arguments: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirArraySetCallImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirArraySetCallImpl.kt index bcfa9eff719..bc96dc9c15e 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirArraySetCallImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirArraySetCallImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirArraySetCall import org.jetbrains.kotlin.fir.expressions.FirExpression @@ -24,7 +23,7 @@ class FirArraySetCallImpl( override val psi: PsiElement?, override var rValue: FirExpression, override val operation: FirOperation -) : FirPureAbstractElement(), FirArraySetCall, FirModifiableQualifiedAccess, FirAbstractAnnotatedElement { +) : FirArraySetCall(), FirModifiableQualifiedAccess, FirAbstractAnnotatedElement { override val annotations: MutableList = mutableListOf() override var safe: Boolean = false override var explicitReceiver: FirExpression? = null diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirBinaryLogicExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirBinaryLogicExpressionImpl.kt index d56038a7ed4..e42e300dc48 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirBinaryLogicExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirBinaryLogicExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBinaryLogicExpression import org.jetbrains.kotlin.fir.expressions.FirExpression @@ -26,7 +25,7 @@ class FirBinaryLogicExpressionImpl( override var leftOperand: FirExpression, override var rightOperand: FirExpression, override val kind: LogicOperationKind -) : FirPureAbstractElement(), FirBinaryLogicExpression, FirAbstractAnnotatedElement { +) : FirBinaryLogicExpression(), FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override val annotations: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirBlockImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirBlockImpl.kt index 17d618e4387..906a8475ff5 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirBlockImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirBlockImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirStatement @@ -22,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirBlockImpl( override val psi: PsiElement? -) : FirPureAbstractElement(), FirBlock, FirAbstractAnnotatedElement { +) : FirBlock(), FirAbstractAnnotatedElement { override val annotations: MutableList = mutableListOf() override val statements: MutableList = mutableListOf() override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirBreakExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirBreakExpressionImpl.kt index c149201d153..3b8b983856c 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirBreakExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirBreakExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirTarget import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBreakExpression @@ -23,7 +22,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirBreakExpressionImpl( override val psi: PsiElement? -) : FirPureAbstractElement(), FirBreakExpression, FirAbstractLoopJump, FirAbstractAnnotatedElement { +) : FirBreakExpression(), FirAbstractLoopJump, FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(psi) override val annotations: MutableList = mutableListOf() override lateinit var target: FirTarget diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirCallableReferenceAccessImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirCallableReferenceAccessImpl.kt index d2e27acff29..34a4aff7200 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirCallableReferenceAccessImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirCallableReferenceAccessImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess import org.jetbrains.kotlin.fir.expressions.FirExpression @@ -23,7 +22,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirCallableReferenceAccessImpl( override val psi: PsiElement? -) : FirPureAbstractElement(), FirCallableReferenceAccess, FirModifiableQualifiedAccess, FirAbstractAnnotatedElement { +) : FirCallableReferenceAccess(), FirModifiableQualifiedAccess, FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override val annotations: MutableList = mutableListOf() override var safe: Boolean = false diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirCatchImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirCatchImpl.kt index 9e27baf8ef0..cbd3061de00 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirCatchImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirCatchImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirCatch @@ -21,7 +20,7 @@ class FirCatchImpl( override val psi: PsiElement?, override var parameter: FirValueParameter, override var block: FirBlock -) : FirPureAbstractElement(), FirCatch { +) : FirCatch() { override fun acceptChildren(visitor: FirVisitor, data: D) { parameter.accept(visitor, data) block.accept(visitor, data) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirClassReferenceExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirClassReferenceExpressionImpl.kt index 57937c4466a..606c7e453ca 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirClassReferenceExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirClassReferenceExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirClassReferenceExpression import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement @@ -22,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirClassReferenceExpressionImpl( override val psi: PsiElement?, override var classTypeRef: FirTypeRef -) : FirPureAbstractElement(), FirClassReferenceExpression, FirAbstractAnnotatedElement { +) : FirClassReferenceExpression(), FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override val annotations: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt index d01dfcea816..9ddc3d851dd 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirComponentCall import org.jetbrains.kotlin.fir.expressions.FirExpression @@ -28,7 +27,7 @@ class FirComponentCallImpl( override val psi: PsiElement?, override var explicitReceiver: FirExpression, override val componentIndex: Int -) : FirPureAbstractElement(), FirComponentCall, FirCallWithArgumentList, FirAbstractAnnotatedElement { +) : FirComponentCall(), FirCallWithArgumentList, FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override val annotations: MutableList = mutableListOf() override val safe: Boolean get() = false diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirConstExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirConstExpressionImpl.kt index 8504b2be2ad..4e1ecb12c46 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirConstExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirConstExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirConstExpression import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement @@ -24,7 +23,7 @@ class FirConstExpressionImpl ( override val psi: PsiElement?, override val kind: IrConstKind, override val value: T -) : FirPureAbstractElement(), FirConstExpression, FirAbstractAnnotatedElement { +) : FirConstExpression(), FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override val annotations: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirContinueExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirContinueExpressionImpl.kt index 87c275c3e7d..fe5d52a7f1d 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirContinueExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirContinueExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirTarget import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirContinueExpression @@ -23,7 +22,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirContinueExpressionImpl( override val psi: PsiElement? -) : FirPureAbstractElement(), FirContinueExpression, FirAbstractLoopJump, FirAbstractAnnotatedElement { +) : FirContinueExpression(), FirAbstractLoopJump, FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(psi) override val annotations: MutableList = mutableListOf() override lateinit var target: FirTarget diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirDelegatedConstructorCallImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirDelegatedConstructorCallImpl.kt index 482fd8017c2..8619aa4faa1 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirDelegatedConstructorCallImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirDelegatedConstructorCallImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall import org.jetbrains.kotlin.fir.expressions.FirExpression @@ -26,7 +25,7 @@ class FirDelegatedConstructorCallImpl( override val psi: PsiElement?, override var constructedTypeRef: FirTypeRef, override val isThis: Boolean -) : FirPureAbstractElement(), FirDelegatedConstructorCall, FirCallWithArgumentList, FirAbstractAnnotatedElement { +) : FirDelegatedConstructorCall(), FirCallWithArgumentList, FirAbstractAnnotatedElement { override val annotations: MutableList = mutableListOf() override val arguments: MutableList = mutableListOf() override val isSuper: Boolean get() = !isThis diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirDoWhileLoopImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirDoWhileLoopImpl.kt index c1eedf18da4..c3a80432c2c 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirDoWhileLoopImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirDoWhileLoopImpl.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.FirLabel -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirDoWhileLoop @@ -23,7 +22,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirDoWhileLoopImpl( override val psi: PsiElement?, override var condition: FirExpression -) : FirPureAbstractElement(), FirDoWhileLoop, FirAbstractLoop, FirAbstractAnnotatedElement { +) : FirDoWhileLoop(), FirAbstractLoop, FirAbstractAnnotatedElement { override val annotations: MutableList = mutableListOf() override lateinit var block: FirBlock override var label: FirLabel? = null diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirEmptyExpressionBlock.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirEmptyExpressionBlock.kt index 3c7c30627d9..505e1cc86a8 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirEmptyExpressionBlock.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirEmptyExpressionBlock.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirStatement @@ -20,7 +19,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -class FirEmptyExpressionBlock : FirPureAbstractElement(), FirBlock, FirAbstractAnnotatedElement { +class FirEmptyExpressionBlock : FirBlock(), FirAbstractAnnotatedElement { override val psi: PsiElement? = null override val annotations: MutableList = mutableListOf() override val statements: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirErrorExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirErrorExpressionImpl.kt index 8cf090efa99..a12b500f4af 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirErrorExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirErrorExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirErrorExpression import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement @@ -22,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirErrorExpressionImpl( override val psi: PsiElement?, override val reason: String -) : FirPureAbstractElement(), FirErrorExpression, FirAbstractAnnotatedElement { +) : FirErrorExpression(), FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override val annotations: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirExpressionWithSmartcastImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirExpressionWithSmartcastImpl.kt index b079e6b9f9c..77dff1b02d3 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirExpressionWithSmartcastImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirExpressionWithSmartcastImpl.kt @@ -6,22 +6,19 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.* -import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef -import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl import org.jetbrains.kotlin.fir.visitors.* class FirExpressionWithSmartcastImpl( override var originalExpression: FirQualifiedAccessExpression, override val typeRef: FirTypeRef, override val typesFromSmartcast: Collection -) : FirPureAbstractElement(), FirExpressionWithSmartcast { +) : FirExpressionWithSmartcast() { init { assert(originalExpression.typeRef is FirResolvedTypeRef) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirFunctionCallImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirFunctionCallImpl.kt index 365d76c4593..83b787a0bb5 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirFunctionCallImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirFunctionCallImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirFunctionCall @@ -24,7 +23,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirFunctionCallImpl( override val psi: PsiElement? -) : FirPureAbstractElement(), FirFunctionCall, FirModifiableQualifiedAccess, FirCallWithArgumentList, FirAbstractAnnotatedElement { +) : FirFunctionCall(), FirModifiableQualifiedAccess, FirCallWithArgumentList, FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override val annotations: MutableList = mutableListOf() override var safe: Boolean = false diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirGetClassCallImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirGetClassCallImpl.kt index 66d746dc34d..e167b59fdc8 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirGetClassCallImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirGetClassCallImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirGetClassCall @@ -22,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirGetClassCallImpl( override val psi: PsiElement? -) : FirPureAbstractElement(), FirGetClassCall, FirCallWithArgumentList, FirAbstractAnnotatedElement { +) : FirGetClassCall(), FirCallWithArgumentList, FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override val annotations: MutableList = mutableListOf() override val arguments: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirLambdaArgumentExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirLambdaArgumentExpressionImpl.kt index 74ddbb9621b..f55d0997b95 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirLambdaArgumentExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirLambdaArgumentExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirLambdaArgumentExpression @@ -22,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirLambdaArgumentExpressionImpl( override val psi: PsiElement?, override var expression: FirExpression -) : FirPureAbstractElement(), FirLambdaArgumentExpression, FirAbstractAnnotatedElement { +) : FirLambdaArgumentExpression(), FirAbstractAnnotatedElement { override val typeRef: FirTypeRef get() = expression.typeRef override val annotations: MutableList = mutableListOf() override val isSpread: Boolean get() = false diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirNamedArgumentExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirNamedArgumentExpressionImpl.kt index 12e48e48d5b..5acd0048fc9 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirNamedArgumentExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirNamedArgumentExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirNamedArgumentExpression @@ -25,7 +24,7 @@ class FirNamedArgumentExpressionImpl( override var expression: FirExpression, override val isSpread: Boolean, override val name: Name -) : FirPureAbstractElement(), FirNamedArgumentExpression, FirAbstractAnnotatedElement { +) : FirNamedArgumentExpression(), FirAbstractAnnotatedElement { override val typeRef: FirTypeRef get() = expression.typeRef override val annotations: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirOperatorCallImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirOperatorCallImpl.kt index 171f72a4133..a79e6fa8ed3 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirOperatorCallImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirOperatorCallImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirOperation @@ -25,7 +24,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirOperatorCallImpl( override val psi: PsiElement?, override val operation: FirOperation -) : FirPureAbstractElement(), FirOperatorCall, FirCallWithArgumentList, FirAbstractAnnotatedElement { +) : FirOperatorCall(), FirCallWithArgumentList, FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = if (operation in FirOperation.BOOLEANS) { FirImplicitBooleanTypeRef(null) } else { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirQualifiedAccessExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirQualifiedAccessExpressionImpl.kt index 50066e3bbb3..8f215314db6 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirQualifiedAccessExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirQualifiedAccessExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression @@ -23,7 +22,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirQualifiedAccessExpressionImpl( override val psi: PsiElement? -) : FirPureAbstractElement(), FirQualifiedAccessExpression, FirModifiableQualifiedAccess, FirAbstractAnnotatedElement { +) : FirQualifiedAccessExpression(), FirModifiableQualifiedAccess, FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override val annotations: MutableList = mutableListOf() override var safe: Boolean = false diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirResolvedQualifierImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirResolvedQualifierImpl.kt index 94e08b7d97b..94a8865cae5 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirResolvedQualifierImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirResolvedQualifierImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement @@ -25,7 +24,7 @@ class FirResolvedQualifierImpl( override val psi: PsiElement?, override var packageFqName: FqName, override var relativeClassFqName: FqName? -) : FirPureAbstractElement(), FirResolvedQualifier, FirAbstractAnnotatedElement { +) : FirResolvedQualifier(), FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override val annotations: MutableList = mutableListOf() override val classId: ClassId? get() = relativeClassFqName?.let { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirReturnExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirReturnExpressionImpl.kt index 33d6c07f6af..ec7c7092700 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirReturnExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirReturnExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirTarget import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall @@ -25,7 +24,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirReturnExpressionImpl( override val psi: PsiElement?, override var result: FirExpression -) : FirPureAbstractElement(), FirReturnExpression, FirAbstractAnnotatedElement { +) : FirReturnExpression(), FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(psi) override val annotations: MutableList = mutableListOf() override lateinit var target: FirTarget> diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirSingleExpressionBlock.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirSingleExpressionBlock.kt index f9a72f5663c..d7da9dc39cd 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirSingleExpressionBlock.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirSingleExpressionBlock.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirStatement @@ -20,7 +19,7 @@ import org.jetbrains.kotlin.fir.visitors.transformSingle class FirSingleExpressionBlock( var statement: FirStatement -) : FirPureAbstractElement(), FirBlock, FirAbstractAnnotatedElement { +) : FirBlock(), FirAbstractAnnotatedElement { override val psi: PsiElement? get() = statement.psi override val annotations: MutableList = mutableListOf() override val statements: List get() = listOf(statement) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirSpreadArgumentExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirSpreadArgumentExpressionImpl.kt index ae63954a757..c65f0a0c64e 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirSpreadArgumentExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirSpreadArgumentExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirSpreadArgumentExpression @@ -22,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirSpreadArgumentExpressionImpl( override val psi: PsiElement?, override var expression: FirExpression -) : FirPureAbstractElement(), FirSpreadArgumentExpression, FirAbstractAnnotatedElement { +) : FirSpreadArgumentExpression(), FirAbstractAnnotatedElement { override val typeRef: FirTypeRef get() = expression.typeRef override val annotations: MutableList = mutableListOf() override val isSpread: Boolean get() = true diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirStringConcatenationCallImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirStringConcatenationCallImpl.kt index a11121167b5..fe651c4f40b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirStringConcatenationCallImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirStringConcatenationCallImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirStringConcatenationCall @@ -22,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirStringConcatenationCallImpl( override val psi: PsiElement? -) : FirPureAbstractElement(), FirStringConcatenationCall, FirCallWithArgumentList, FirAbstractAnnotatedElement { +) : FirStringConcatenationCall(), FirCallWithArgumentList, FirAbstractAnnotatedElement { override val annotations: MutableList = mutableListOf() override val arguments: MutableList = mutableListOf() override var typeRef: FirTypeRef = FirImplicitStringTypeRef(psi) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirThisReceiverExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirThisReceiverExpressionImpl.kt index d9d801eaf28..61eae89aa44 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirThisReceiverExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirThisReceiverExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression @@ -24,7 +23,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirThisReceiverExpressionImpl( override val psi: PsiElement?, override var calleeReference: FirThisReference -) : FirPureAbstractElement(), FirThisReceiverExpression, FirModifiableQualifiedAccess, FirAbstractAnnotatedElement { +) : FirThisReceiverExpression(), FirModifiableQualifiedAccess, FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override val annotations: MutableList = mutableListOf() override var safe: Boolean = false diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirThrowExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirThrowExpressionImpl.kt index b191523032c..66bd7c62e77 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirThrowExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirThrowExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirThrowExpression @@ -23,7 +22,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirThrowExpressionImpl( override val psi: PsiElement?, override var exception: FirExpression -) : FirPureAbstractElement(), FirThrowExpression, FirAbstractAnnotatedElement { +) : FirThrowExpression(), FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(psi) override val annotations: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirTryExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirTryExpressionImpl.kt index dece27fdedf..0dd3bfa36ae 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirTryExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirTryExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirCatch @@ -27,7 +26,7 @@ class FirTryExpressionImpl( override val psi: PsiElement?, override var tryBlock: FirBlock, override var finallyBlock: FirBlock? -) : FirPureAbstractElement(), FirTryExpression, FirAbstractAnnotatedElement { +) : FirTryExpression(), FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override val annotations: MutableList = mutableListOf() override var calleeReference: FirReference = FirStubReference() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirTypeOperatorCallImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirTypeOperatorCallImpl.kt index eeba436affc..bfbce7c42b4 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirTypeOperatorCallImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirTypeOperatorCallImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirOperation @@ -25,7 +24,7 @@ class FirTypeOperatorCallImpl( override val psi: PsiElement?, override val operation: FirOperation, override var conversionTypeRef: FirTypeRef -) : FirPureAbstractElement(), FirTypeOperatorCall, FirCallWithArgumentList, FirAbstractAnnotatedElement { +) : FirTypeOperatorCall(), FirCallWithArgumentList, FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override val annotations: MutableList = mutableListOf() override val arguments: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt index 7559db3ff78..64f91a1aa56 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirOperation @@ -25,7 +24,7 @@ class FirVariableAssignmentImpl( override var safe: Boolean, override var rValue: FirExpression, override var operation: FirOperation -) : FirPureAbstractElement(), FirVariableAssignment, FirModifiableQualifiedAccess, FirAbstractAnnotatedElement { +) : FirVariableAssignment(), FirModifiableQualifiedAccess, FirAbstractAnnotatedElement { override val annotations: MutableList = mutableListOf() override var explicitReceiver: FirExpression? = null override var dispatchReceiver: FirExpression = FirNoReceiverExpression diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenBranchImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenBranchImpl.kt index 0469bb098de..00279dbf2e6 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenBranchImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenBranchImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirWhenBranch @@ -21,7 +20,7 @@ class FirWhenBranchImpl( override val psi: PsiElement?, override var condition: FirExpression, override var result: FirBlock -) : FirPureAbstractElement(), FirWhenBranch { +) : FirWhenBranch() { override fun acceptChildren(visitor: FirVisitor, data: D) { condition.accept(visitor, data) result.accept(visitor, data) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenExpressionImpl.kt index 033083d64e2..05df6d5ac56 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.declarations.FirVariable import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression @@ -28,7 +27,7 @@ class FirWhenExpressionImpl( override val psi: PsiElement?, override var subject: FirExpression?, override var subjectVariable: FirVariable<*>? -) : FirPureAbstractElement(), FirWhenExpression, FirAbstractAnnotatedElement { +) : FirWhenExpression(), FirAbstractAnnotatedElement { override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override val annotations: MutableList = mutableListOf() override var calleeReference: FirReference = FirStubReference() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenSubjectExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenSubjectExpressionImpl.kt index 8940d1d74b6..464f2b8fc73 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenSubjectExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenSubjectExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirWhenSubject import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpression @@ -22,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirWhenSubjectExpressionImpl( override val psi: PsiElement?, override val whenSubject: FirWhenSubject -) : FirPureAbstractElement(), FirWhenSubjectExpression, FirAbstractAnnotatedElement { +) : FirWhenSubjectExpression(), FirAbstractAnnotatedElement { override val typeRef: FirTypeRef get() = whenSubject.whenExpression.subject!!.typeRef override val annotations: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhileLoopImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhileLoopImpl.kt index a5637a3279d..d457c7692b3 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhileLoopImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhileLoopImpl.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.FirLabel -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirExpression @@ -23,7 +22,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirWhileLoopImpl( override val psi: PsiElement?, override var condition: FirExpression -) : FirPureAbstractElement(), FirWhileLoop, FirAbstractLoop, FirAbstractAnnotatedElement { +) : FirWhileLoop(), FirAbstractLoop, FirAbstractAnnotatedElement { override val annotations: MutableList = mutableListOf() override var label: FirLabel? = null override lateinit var block: FirBlock diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWrappedDelegateExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWrappedDelegateExpressionImpl.kt index 743e4e33f49..01dbdbfa1aa 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWrappedDelegateExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWrappedDelegateExpressionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression @@ -22,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirWrappedDelegateExpressionImpl( override val psi: PsiElement?, override var expression: FirExpression -) : FirPureAbstractElement(), FirWrappedDelegateExpression, FirAbstractAnnotatedElement { +) : FirWrappedDelegateExpression(), FirAbstractAnnotatedElement { override val typeRef: FirTypeRef get() = expression.typeRef override val annotations: MutableList = mutableListOf() override lateinit var delegateProvider: FirExpression diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/impl/FirLabelImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/impl/FirLabelImpl.kt index 99306f0f6f5..b06f0e7d969 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/impl/FirLabelImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/impl/FirLabelImpl.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.impl import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.FirLabel -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.visitors.* /* @@ -18,7 +17,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirLabelImpl( override val psi: PsiElement?, override val name: String -) : FirPureAbstractElement(), FirLabel { +) : FirLabel() { override fun acceptChildren(visitor: FirVisitor, data: D) {} override fun transformChildren(transformer: FirTransformer, data: D): FirLabelImpl { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirBackingFieldReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirBackingFieldReference.kt index 307738cd3af..24f1aeb2ca5 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirBackingFieldReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirBackingFieldReference.kt @@ -16,11 +16,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirBackingFieldReference : FirResolvedCallableReference { - override val psi: PsiElement? - override val name: Name - override val candidateSymbol: AbstractFirBasedSymbol<*>? - override val resolvedSymbol: FirBackingFieldSymbol +abstract class FirBackingFieldReference : FirResolvedCallableReference() { + abstract override val psi: PsiElement? + abstract override val name: Name + abstract override val candidateSymbol: AbstractFirBasedSymbol<*>? + abstract override val resolvedSymbol: FirBackingFieldSymbol override fun accept(visitor: FirVisitor, data: D): R = visitor.visitBackingFieldReference(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirControlFlowGraphReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirControlFlowGraphReference.kt index 3ad15bac837..f4ace55c2c7 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirControlFlowGraphReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirControlFlowGraphReference.kt @@ -13,8 +13,8 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirControlFlowGraphReference : FirReference { - override val psi: PsiElement? +abstract class FirControlFlowGraphReference : FirReference() { + abstract override val psi: PsiElement? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitControlFlowGraphReference(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirDelegateFieldReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirDelegateFieldReference.kt index 4be3a3284f8..e6a980aa564 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirDelegateFieldReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirDelegateFieldReference.kt @@ -16,11 +16,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirDelegateFieldReference : FirResolvedCallableReference { - override val psi: PsiElement? - override val name: Name - override val candidateSymbol: AbstractFirBasedSymbol<*>? - override val resolvedSymbol: FirDelegateFieldSymbol<*> +abstract class FirDelegateFieldReference : FirResolvedCallableReference() { + abstract override val psi: PsiElement? + abstract override val name: Name + abstract override val candidateSymbol: AbstractFirBasedSymbol<*>? + abstract override val resolvedSymbol: FirDelegateFieldSymbol<*> override fun accept(visitor: FirVisitor, data: D): R = visitor.visitDelegateFieldReference(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirErrorNamedReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirErrorNamedReference.kt index ea0d991527b..b39e2d8ceb8 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirErrorNamedReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirErrorNamedReference.kt @@ -15,11 +15,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirErrorNamedReference : FirNamedReference { - override val psi: PsiElement? - override val name: Name - override val candidateSymbol: AbstractFirBasedSymbol<*>? - val errorReason: String +abstract class FirErrorNamedReference : FirNamedReference() { + abstract override val psi: PsiElement? + abstract override val name: Name + abstract override val candidateSymbol: AbstractFirBasedSymbol<*>? + abstract val errorReason: String override fun accept(visitor: FirVisitor, data: D): R = visitor.visitErrorNamedReference(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirNamedReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirNamedReference.kt index 43d615a2582..595abda75ef 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirNamedReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirNamedReference.kt @@ -15,10 +15,10 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirNamedReference : FirReference { - override val psi: PsiElement? - val name: Name - val candidateSymbol: AbstractFirBasedSymbol<*>? +abstract class FirNamedReference : FirReference() { + abstract override val psi: PsiElement? + abstract val name: Name + abstract val candidateSymbol: AbstractFirBasedSymbol<*>? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitNamedReference(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirReference.kt index c915665154f..6a387a9d085 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirReference.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.references import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.FirElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.visitors.* /* @@ -14,8 +15,8 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirReference : FirElement { - override val psi: PsiElement? +abstract class FirReference : FirPureAbstractElement(), FirElement { + abstract override val psi: PsiElement? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitReference(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirResolvedCallableReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirResolvedCallableReference.kt index 2672ed95854..cd223bb7499 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirResolvedCallableReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirResolvedCallableReference.kt @@ -15,11 +15,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirResolvedCallableReference : FirNamedReference { - override val psi: PsiElement? - override val name: Name - override val candidateSymbol: AbstractFirBasedSymbol<*>? - val resolvedSymbol: AbstractFirBasedSymbol<*> +abstract class FirResolvedCallableReference : FirNamedReference() { + abstract override val psi: PsiElement? + abstract override val name: Name + abstract override val candidateSymbol: AbstractFirBasedSymbol<*>? + abstract val resolvedSymbol: AbstractFirBasedSymbol<*> override fun accept(visitor: FirVisitor, data: D): R = visitor.visitResolvedCallableReference(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirSuperReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirSuperReference.kt index 188da8c8529..4966d94b03e 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirSuperReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirSuperReference.kt @@ -14,11 +14,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirSuperReference : FirReference { - override val psi: PsiElement? - val superTypeRef: FirTypeRef +abstract class FirSuperReference : FirReference() { + abstract override val psi: PsiElement? + abstract val superTypeRef: FirTypeRef override fun accept(visitor: FirVisitor, data: D): R = visitor.visitSuperReference(this, data) - fun replaceSuperTypeRef(newSuperTypeRef: FirTypeRef) + abstract fun replaceSuperTypeRef(newSuperTypeRef: FirTypeRef) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirThisReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirThisReference.kt index 7b72a334a13..9c1d56e6e94 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirThisReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirThisReference.kt @@ -14,12 +14,12 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirThisReference : FirReference { - override val psi: PsiElement? - val labelName: String? - val boundSymbol: AbstractFirBasedSymbol<*>? +abstract class FirThisReference : FirReference() { + abstract override val psi: PsiElement? + abstract val labelName: String? + abstract val boundSymbol: AbstractFirBasedSymbol<*>? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitThisReference(this, data) - fun replaceBoundSymbol(newBoundSymbol: AbstractFirBasedSymbol<*>) + abstract fun replaceBoundSymbol(newBoundSymbol: AbstractFirBasedSymbol<*>) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirBackingFieldReferenceImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirBackingFieldReferenceImpl.kt index a205776529a..27d4b097f2a 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirBackingFieldReferenceImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirBackingFieldReferenceImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.references.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirBackingFieldReference import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol @@ -22,7 +21,7 @@ class FirBackingFieldReferenceImpl( override val psi: PsiElement?, override val candidateSymbol: AbstractFirBasedSymbol<*>?, override val resolvedSymbol: FirBackingFieldSymbol -) : FirPureAbstractElement(), FirBackingFieldReference { +) : FirBackingFieldReference() { override val name: Name get() = Name.identifier("\$field") override fun acceptChildren(visitor: FirVisitor, data: D) {} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirDelegateFieldReferenceImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirDelegateFieldReferenceImpl.kt index f58547b0bf4..cb3f864f1f4 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirDelegateFieldReferenceImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirDelegateFieldReferenceImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.references.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirDelegateFieldReference import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol @@ -22,7 +21,7 @@ class FirDelegateFieldReferenceImpl( override val psi: PsiElement?, override val candidateSymbol: AbstractFirBasedSymbol<*>?, override val resolvedSymbol: FirDelegateFieldSymbol<*> -) : FirPureAbstractElement(), FirDelegateFieldReference { +) : FirDelegateFieldReference() { override val name: Name get() = Name.identifier("\$delegate") override fun acceptChildren(visitor: FirVisitor, data: D) {} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirEmptyControlFlowGraphReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirEmptyControlFlowGraphReference.kt index 3dc57a0bddf..963aba228f9 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirEmptyControlFlowGraphReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirEmptyControlFlowGraphReference.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.references.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.visitors.* @@ -15,7 +14,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -class FirEmptyControlFlowGraphReference : FirPureAbstractElement(), FirControlFlowGraphReference { +class FirEmptyControlFlowGraphReference : FirControlFlowGraphReference() { override val psi: PsiElement? = null override fun acceptChildren(visitor: FirVisitor, data: D) {} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirErrorNamedReferenceImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirErrorNamedReferenceImpl.kt index 81862506fde..af961b82ea9 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirErrorNamedReferenceImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirErrorNamedReferenceImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.references.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirErrorNamedReference import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.name.Name @@ -20,7 +19,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirErrorNamedReferenceImpl( override val psi: PsiElement?, override val errorReason: String -) : FirPureAbstractElement(), FirErrorNamedReference { +) : FirErrorNamedReference() { override val name: Name = Name.special("<$errorReason>") override val candidateSymbol: AbstractFirBasedSymbol<*>? get() = null diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirExplicitSuperReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirExplicitSuperReference.kt index e7a993f1a73..7a01346395b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirExplicitSuperReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirExplicitSuperReference.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.references.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirSuperReference import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -19,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirExplicitSuperReference( override val psi: PsiElement?, override var superTypeRef: FirTypeRef -) : FirPureAbstractElement(), FirSuperReference { +) : FirSuperReference() { override fun acceptChildren(visitor: FirVisitor, data: D) { superTypeRef.accept(visitor, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirExplicitThisReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirExplicitThisReference.kt index 224e340e9de..6d189a5e662 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirExplicitThisReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirExplicitThisReference.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.references.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirThisReference import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.visitors.* @@ -19,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirExplicitThisReference( override val psi: PsiElement?, override val labelName: String? -) : FirPureAbstractElement(), FirThisReference { +) : FirThisReference() { override var boundSymbol: AbstractFirBasedSymbol<*>? = null override fun acceptChildren(visitor: FirVisitor, data: D) {} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirImplicitThisReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirImplicitThisReference.kt index e895327e108..f000477cf26 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirImplicitThisReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirImplicitThisReference.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.references.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirThisReference import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.visitors.* @@ -18,7 +17,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirImplicitThisReference( override val boundSymbol: AbstractFirBasedSymbol<*>? -) : FirPureAbstractElement(), FirThisReference { +) : FirThisReference() { override val psi: PsiElement? = null override val labelName: String? get() = null diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirPropertyFromParameterCallableReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirPropertyFromParameterCallableReference.kt index e85102e06e9..8654a9aa380 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirPropertyFromParameterCallableReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirPropertyFromParameterCallableReference.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.references.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirResolvedCallableReference import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.name.Name @@ -21,7 +20,7 @@ class FirPropertyFromParameterCallableReference( override val psi: PsiElement?, override val name: Name, override val resolvedSymbol: AbstractFirBasedSymbol<*> -) : FirPureAbstractElement(), FirResolvedCallableReference { +) : FirResolvedCallableReference() { override val candidateSymbol: AbstractFirBasedSymbol<*>? get() = null override fun acceptChildren(visitor: FirVisitor, data: D) {} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirResolvedCallableReferenceImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirResolvedCallableReferenceImpl.kt index 98dcd2e1e6f..d6b7687e7ff 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirResolvedCallableReferenceImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirResolvedCallableReferenceImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.references.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirResolvedCallableReference import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.name.Name @@ -21,7 +20,7 @@ class FirResolvedCallableReferenceImpl( override val psi: PsiElement?, override val name: Name, override val resolvedSymbol: AbstractFirBasedSymbol<*> -) : FirPureAbstractElement(), FirResolvedCallableReference { +) : FirResolvedCallableReference() { override val candidateSymbol: AbstractFirBasedSymbol<*>? get() = null override fun acceptChildren(visitor: FirVisitor, data: D) {} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirSimpleNamedReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirSimpleNamedReference.kt index 3d856051c7b..e7db0e5cfb6 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirSimpleNamedReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirSimpleNamedReference.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.references.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirNamedReference import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.name.Name @@ -21,7 +20,7 @@ open class FirSimpleNamedReference( override val psi: PsiElement?, override val name: Name, override val candidateSymbol: AbstractFirBasedSymbol<*>? -) : FirPureAbstractElement(), FirNamedReference { +) : FirNamedReference() { override fun acceptChildren(visitor: FirVisitor, data: D) {} override fun transformChildren(transformer: FirTransformer, data: D): FirSimpleNamedReference { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirStubReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirStubReference.kt index 6ce4ba28dbc..283adcee8c0 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirStubReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/impl/FirStubReference.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.references.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.visitors.* @@ -15,7 +14,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -class FirStubReference : FirPureAbstractElement(), FirReference { +class FirStubReference : FirReference() { override val psi: PsiElement? get() = null override fun acceptChildren(visitor: FirVisitor, data: D) {} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirDelegatedTypeRef.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirDelegatedTypeRef.kt index 2b8dfcb1fa0..821a2163dd1 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirDelegatedTypeRef.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirDelegatedTypeRef.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.types import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.visitors.* @@ -15,11 +16,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirDelegatedTypeRef : FirTypeRef { - override val psi: PsiElement? - override val annotations: List - val delegate: FirExpression? - val typeRef: FirTypeRef +abstract class FirDelegatedTypeRef : FirPureAbstractElement(), FirTypeRef { + abstract override val psi: PsiElement? + abstract override val annotations: List + abstract val delegate: FirExpression? + abstract val typeRef: FirTypeRef override fun accept(visitor: FirVisitor, data: D): R = visitor.visitDelegatedTypeRef(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirDynamicTypeRef.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirDynamicTypeRef.kt index 0d269f8fd0e..c5ea067e5b4 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirDynamicTypeRef.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirDynamicTypeRef.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.types import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.visitors.* @@ -14,10 +15,10 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirDynamicTypeRef : FirTypeRefWithNullability { - override val psi: PsiElement? - override val annotations: List - override val isMarkedNullable: Boolean +abstract class FirDynamicTypeRef : FirPureAbstractElement(), FirTypeRefWithNullability { + abstract override val psi: PsiElement? + abstract override val annotations: List + abstract override val isMarkedNullable: Boolean override fun accept(visitor: FirVisitor, data: D): R = visitor.visitDynamicTypeRef(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirErrorTypeRef.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirErrorTypeRef.kt index 4752dc37f83..680224d0150 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirErrorTypeRef.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirErrorTypeRef.kt @@ -14,11 +14,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirErrorTypeRef : FirResolvedTypeRef { - override val psi: PsiElement? - override val annotations: List - override val type: ConeKotlinType - val reason: String +abstract class FirErrorTypeRef : FirResolvedTypeRef() { + abstract override val psi: PsiElement? + abstract override val annotations: List + abstract override val type: ConeKotlinType + abstract val reason: String override fun accept(visitor: FirVisitor, data: D): R = visitor.visitErrorTypeRef(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirImplicitTypeRef.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirImplicitTypeRef.kt index d9394b7066d..0a6886994dc 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirImplicitTypeRef.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirImplicitTypeRef.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.types import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.visitors.* @@ -14,9 +15,9 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirImplicitTypeRef : FirTypeRef { - override val psi: PsiElement? - override val annotations: List +abstract class FirImplicitTypeRef : FirPureAbstractElement(), FirTypeRef { + abstract override val psi: PsiElement? + abstract override val annotations: List override fun accept(visitor: FirVisitor, data: D): R = visitor.visitImplicitTypeRef(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirResolvedFunctionTypeRef.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirResolvedFunctionTypeRef.kt index 4a3d25f51de..6f8fc4e5f78 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirResolvedFunctionTypeRef.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirResolvedFunctionTypeRef.kt @@ -15,14 +15,14 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirResolvedFunctionTypeRef : FirResolvedTypeRef, FirFunctionTypeRef { - override val psi: PsiElement? - override val annotations: List - override val type: ConeKotlinType - override val isMarkedNullable: Boolean - override val receiverTypeRef: FirTypeRef? - override val valueParameters: List - override val returnTypeRef: FirTypeRef +abstract class FirResolvedFunctionTypeRef : FirResolvedTypeRef(), FirFunctionTypeRef { + abstract override val psi: PsiElement? + abstract override val annotations: List + abstract override val type: ConeKotlinType + abstract override val isMarkedNullable: Boolean + abstract override val receiverTypeRef: FirTypeRef? + abstract override val valueParameters: List + abstract override val returnTypeRef: FirTypeRef override fun accept(visitor: FirVisitor, data: D): R = visitor.visitResolvedFunctionTypeRef(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirResolvedTypeRef.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirResolvedTypeRef.kt index acd66cffb0b..195baac4feb 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirResolvedTypeRef.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirResolvedTypeRef.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.types import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.visitors.* @@ -14,10 +15,10 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirResolvedTypeRef : FirTypeRef { - override val psi: PsiElement? - override val annotations: List - val type: ConeKotlinType +abstract class FirResolvedTypeRef : FirPureAbstractElement(), FirTypeRef { + abstract override val psi: PsiElement? + abstract override val annotations: List + abstract val type: ConeKotlinType override fun accept(visitor: FirVisitor, data: D): R = visitor.visitResolvedTypeRef(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirStarProjection.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirStarProjection.kt index b5255fd5538..b918ae33cc0 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirStarProjection.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirStarProjection.kt @@ -13,8 +13,8 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirStarProjection : FirTypeProjection { - override val psi: PsiElement? +abstract class FirStarProjection : FirTypeProjection() { + abstract override val psi: PsiElement? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitStarProjection(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirTypeProjection.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirTypeProjection.kt index 5b2134b5dc6..74430291743 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirTypeProjection.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirTypeProjection.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.types import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.FirElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.visitors.* /* @@ -14,8 +15,8 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirTypeProjection : FirElement { - override val psi: PsiElement? +abstract class FirTypeProjection : FirPureAbstractElement(), FirElement { + abstract override val psi: PsiElement? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitTypeProjection(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirTypeProjectionWithVariance.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirTypeProjectionWithVariance.kt index c377453a3b7..c50319c456b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirTypeProjectionWithVariance.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirTypeProjectionWithVariance.kt @@ -14,10 +14,10 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirTypeProjectionWithVariance : FirTypeProjection { - override val psi: PsiElement? - val typeRef: FirTypeRef - val variance: Variance +abstract class FirTypeProjectionWithVariance : FirTypeProjection() { + abstract override val psi: PsiElement? + abstract val typeRef: FirTypeRef + abstract val variance: Variance override fun accept(visitor: FirVisitor, data: D): R = visitor.visitTypeProjectionWithVariance(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirUserTypeRef.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirUserTypeRef.kt index bce3ae2463b..fefcee44da2 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirUserTypeRef.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirUserTypeRef.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.types import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.visitors.* @@ -14,11 +15,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirUserTypeRef : FirTypeRefWithNullability { - override val psi: PsiElement? - override val annotations: List - override val isMarkedNullable: Boolean - val qualifier: List +abstract class FirUserTypeRef : FirPureAbstractElement(), FirTypeRefWithNullability { + abstract override val psi: PsiElement? + abstract override val annotations: List + abstract override val isMarkedNullable: Boolean + abstract val qualifier: List override fun accept(visitor: FirVisitor, data: D): R = visitor.visitUserTypeRef(this, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirComputingImplicitTypeRef.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirComputingImplicitTypeRef.kt index 6687e820510..f11a2816580 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirComputingImplicitTypeRef.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirComputingImplicitTypeRef.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.types.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef @@ -17,7 +16,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -object FirComputingImplicitTypeRef : FirPureAbstractElement(), FirImplicitTypeRef, FirAbstractAnnotatedElement { +object FirComputingImplicitTypeRef : FirImplicitTypeRef(), FirAbstractAnnotatedElement { override val psi: PsiElement? get() = null override val annotations: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirDelegatedTypeRefImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirDelegatedTypeRefImpl.kt index 27b51d1c9fc..ead83640b5d 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirDelegatedTypeRefImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirDelegatedTypeRefImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.types.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.types.FirDelegatedTypeRef @@ -21,7 +20,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirDelegatedTypeRefImpl( override var delegate: FirExpression?, override var typeRef: FirTypeRef -) : FirPureAbstractElement(), FirDelegatedTypeRef { +) : FirDelegatedTypeRef() { override val psi: PsiElement? get() = typeRef.psi override val annotations: List get() = typeRef.annotations diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirDynamicTypeRefImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirDynamicTypeRefImpl.kt index fa45bdd2cb7..290b1c5b6d7 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirDynamicTypeRefImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirDynamicTypeRefImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.types.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement import org.jetbrains.kotlin.fir.types.FirDynamicTypeRef @@ -20,7 +19,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirDynamicTypeRefImpl( override val psi: PsiElement?, override val isMarkedNullable: Boolean -) : FirPureAbstractElement(), FirDynamicTypeRef, FirAbstractAnnotatedElement { +) : FirDynamicTypeRef(), FirAbstractAnnotatedElement { override val annotations: MutableList = mutableListOf() override fun acceptChildren(visitor: FirVisitor, data: D) { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirErrorTypeRefImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirErrorTypeRefImpl.kt index cf8b084eb9a..fbaa3e5a397 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirErrorTypeRefImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirErrorTypeRefImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.types.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement import org.jetbrains.kotlin.fir.types.ConeClassErrorType @@ -22,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirErrorTypeRefImpl( override val psi: PsiElement?, override val reason: String -) : FirPureAbstractElement(), FirErrorTypeRef, FirAbstractAnnotatedElement { +) : FirErrorTypeRef(), FirAbstractAnnotatedElement { override val annotations: MutableList = mutableListOf() override val type: ConeKotlinType = ConeClassErrorType(reason) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitBuiltinTypeRef.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitBuiltinTypeRef.kt index cf4335c01f6..ac3102fa4a8 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitBuiltinTypeRef.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitBuiltinTypeRef.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.types.impl import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.FirElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.symbols.StandardClassIds import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl @@ -23,7 +22,7 @@ sealed class FirImplicitBuiltinTypeRef( val id: ClassId, typeArguments: Array = emptyArray(), isNullable: Boolean = false -) : FirPureAbstractElement(), FirResolvedTypeRef { +) : FirResolvedTypeRef() { override val annotations: List get() = emptyList() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitTypeRefImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitTypeRefImpl.kt index 2d98ac783df..70f3c8fa670 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitTypeRefImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitTypeRefImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.types.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -18,7 +17,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirImplicitTypeRefImpl( override val psi: PsiElement? -) : FirPureAbstractElement(), FirImplicitTypeRef { +) : FirImplicitTypeRef() { override val annotations: List get() = emptyList() override fun acceptChildren(visitor: FirVisitor, data: D) { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirResolvedFunctionTypeRefImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirResolvedFunctionTypeRefImpl.kt index ebb7ce22623..e63ceeb98e6 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirResolvedFunctionTypeRefImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirResolvedFunctionTypeRefImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.types.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement @@ -26,7 +25,7 @@ class FirResolvedFunctionTypeRefImpl( override val isMarkedNullable: Boolean, override var receiverTypeRef: FirTypeRef?, override var returnTypeRef: FirTypeRef -) : FirPureAbstractElement(), FirResolvedFunctionTypeRef, FirAbstractAnnotatedElement { +) : FirResolvedFunctionTypeRef(), FirAbstractAnnotatedElement { override val annotations: MutableList = mutableListOf() override val valueParameters: MutableList = mutableListOf() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirResolvedTypeRefImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirResolvedTypeRefImpl.kt index 8a92ebd85c5..179f482f976 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirResolvedTypeRefImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirResolvedTypeRefImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.types.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement import org.jetbrains.kotlin.fir.types.ConeKotlinType @@ -21,7 +20,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirResolvedTypeRefImpl( override val psi: PsiElement?, override val type: ConeKotlinType -) : FirPureAbstractElement(), FirResolvedTypeRef, FirAbstractAnnotatedElement { +) : FirResolvedTypeRef(), FirAbstractAnnotatedElement { override val annotations: MutableList = mutableListOf() override fun acceptChildren(visitor: FirVisitor, data: D) { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirStarProjectionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirStarProjectionImpl.kt index 5806679c23e..4f23bbdd163 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirStarProjectionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirStarProjectionImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.types.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirStarProjection import org.jetbrains.kotlin.fir.visitors.* @@ -17,7 +16,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirStarProjectionImpl( override val psi: PsiElement? -) : FirPureAbstractElement(), FirStarProjection { +) : FirStarProjection() { override fun acceptChildren(visitor: FirVisitor, data: D) {} override fun transformChildren(transformer: FirTransformer, data: D): FirStarProjectionImpl { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirTypePlaceholderProjection.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirTypePlaceholderProjection.kt index c4ec8765d76..e858bccbba4 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirTypePlaceholderProjection.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirTypePlaceholderProjection.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.types.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeProjection import org.jetbrains.kotlin.fir.visitors.* @@ -15,7 +14,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -object FirTypePlaceholderProjection : FirPureAbstractElement(), FirTypeProjection { +object FirTypePlaceholderProjection : FirTypeProjection() { override val psi: PsiElement? = null override fun acceptChildren(visitor: FirVisitor, data: D) {} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirTypeProjectionWithVarianceImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirTypeProjectionWithVarianceImpl.kt index 523c87a33d4..0a05fc1d3be 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirTypeProjectionWithVarianceImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirTypeProjectionWithVarianceImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.types.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.types.FirTypeProjectionWithVariance import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.types.Variance @@ -21,7 +20,7 @@ class FirTypeProjectionWithVarianceImpl( override val psi: PsiElement?, override var typeRef: FirTypeRef, override val variance: Variance -) : FirPureAbstractElement(), FirTypeProjectionWithVariance { +) : FirTypeProjectionWithVariance() { override fun acceptChildren(visitor: FirVisitor, data: D) { typeRef.accept(visitor, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirUserTypeRefImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirUserTypeRefImpl.kt index 044aea274ff..40853c48cc2 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirUserTypeRefImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirUserTypeRefImpl.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir.types.impl import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement import org.jetbrains.kotlin.fir.types.FirQualifierPart @@ -19,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.transformInplace open class FirUserTypeRefImpl( override val psi: PsiElement?, override val isMarkedNullable: Boolean -) : FirPureAbstractElement(), FirUserTypeRef, FirAbstractAnnotatedElement { +) : FirUserTypeRef(), FirAbstractAnnotatedElement { override val qualifier: MutableList = mutableListOf() override val annotations: MutableList = mutableListOf() diff --git a/compiler/fir/tree/tree-generator/Readme.md b/compiler/fir/tree/tree-generator/Readme.md index 05abcacc0ef..6967a813467 100644 --- a/compiler/fir/tree/tree-generator/Readme.md +++ b/compiler/fir/tree/tree-generator/Readme.md @@ -81,3 +81,9 @@ elementName.configure { - `defaultNull(fieldName, [withGetter: Boolean])` - If some fields should be `lateinit` you describe them in call `lateinit(vararg fields: String)` - If you use some types that shoub be imported list them in method `useTypes(vararg types: Type/Element)` + +# Notes + +- There is algorithm that automatically makes as most abstract classes instead of interfaces as possible. If you want to some `Element` or `Implementation` should be always an interface you should: + - call `shouldBeAnInterface` when configuring a `Element` in `NodeConfigurator.kt` + - specify `kind = Interface` when configuring an `Implementation` in `ImplementationConfigurator.kt` \ No newline at end of file diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt index 5af36cc092a..6d37e7b4599 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt @@ -19,20 +19,13 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() } private fun configure() = with(FirTreeBuilder) { - val callWithArgumentList = impl(call, "FirCallWithArgumentList") { - kind = Interface - } + val callWithArgumentList = impl(call, "FirCallWithArgumentList") - abstractAnnotatedElement = impl(annotationContainer, "FirAbstractAnnotatedElement") { - kind = Interface - } + abstractAnnotatedElement = impl(annotationContainer, "FirAbstractAnnotatedElement") - val modifiableTypeParametersOwner = impl(typeParametersOwner, "FirModifiableTypeParametersOwner") { - kind = Interface - } + val modifiableTypeParametersOwner = impl(typeParametersOwner, "FirModifiableTypeParametersOwner") val modifiableConstructor = impl(constructor, "FirModifiableConstructor") { - kind = Interface parents += modifiableTypeParametersOwner } @@ -57,14 +50,11 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() noImpl(resolvedDeclarationStatus) noImpl(field) - val modifiableClass = impl(klass, "FirModifiableClass") { - kind = Interface - } + val modifiableClass = impl(klass, "FirModifiableClass") val modifiableRegularClass = impl(regularClass, "FirModifiableRegularClass") { parents += modifiableClass parents += modifiableTypeParametersOwner - kind = Interface } val regularClassConfig: ImplementationContext.() -> Unit = { @@ -153,7 +143,6 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() } val modifiableQualifiedAccess = impl(qualifiedAccessWithoutCallee, "FirModifiableQualifiedAccess") { - kind = Interface isMutable("safe") } @@ -196,9 +185,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() useTypes(simpleNamedReferenceType, nameType, noReceiverExpressionType) } - val abstractLoop = impl(loop, "FirAbstractLoop") { - kind = Interface - } + val abstractLoop = impl(loop, "FirAbstractLoop") impl(whileLoop) { parents += abstractLoop @@ -230,8 +217,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() useTypes(implicitBooleanTypeRefType) } - impl(block) { - } + impl(block) val emptyExpressionBlock = impl(block, "FirEmptyExpressionBlock") { // TODO: make statements immutable @@ -274,9 +260,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() } } - val modifiableVariable = impl(variable, "FirModifiableVariable") { - kind = Interface - } + val modifiableVariable = impl(variable, "FirModifiableVariable") impl(property) { parents += modifiableVariable.withArg(property) @@ -398,9 +382,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() } } - val modifiableFunction = impl(function, "FirModifiableFunction") { - kind = Interface - } + val modifiableFunction = impl(function, "FirModifiableFunction") impl(anonymousFunction) { parents += modifiableFunction.withArg(anonymousFunction) @@ -534,7 +516,6 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() } val abstractLoopJump = impl(loopJump, "FirAbstractLoopJump") { - kind = Interface lateinit("target") } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/InterfaceAbstractClassSolver.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/InterfaceAbstractClassSolver.kt new file mode 100644 index 00000000000..42010c25d35 --- /dev/null +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/InterfaceAbstractClassSolver.kt @@ -0,0 +1,178 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.fir.tree.generator + +import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder +import org.jetbrains.kotlin.fir.tree.generator.model.Element +import org.jetbrains.kotlin.fir.tree.generator.model.Implementation +import org.jetbrains.kotlin.fir.tree.generator.model.ImplementationWithArg +import org.jetbrains.kotlin.fir.tree.generator.model.KindOwner + +fun configureInterfacesAndAbstractClasses(builder: AbstractFirTreeBuilder) { + val elements = collectElements(builder) + val elementMapping = ElementMapping(elements) + + val solution = solve2sat(elements, elementMapping) + processRequirementsFromConfig(solution, elementMapping) + updateKinds(solution, elementMapping) +} + +private class ElementMapping(elements: Collection) { + private val varToElements: Map = elements.mapIndexed { index, element -> 2 * index to element.origin }.toMap() + + elements.mapIndexed { index, element -> 2 * index + 1 to element }.toMap() + private val elementsToVar: Map = elements.mapIndexed { index, element -> element.origin to index }.toMap() + private val hasInheritors = elements.map { it to false }.toMap(mutableMapOf()).also { + for (element in elements) { + for (parent in element.allParents) { + it[parent.origin] = true + } + } + } + + operator fun get(element: KindOwner): Int = elementsToVar.getValue(element) + operator fun get(index: Int): KindOwner = varToElements.getValue(index) + + fun hasInheritors(element: KindOwner): Boolean { + return hasInheritors[element]!! + } + + val size: Int = elements.size +} + +private fun collectElements(builder: AbstractFirTreeBuilder): List { + return (builder.elements + builder.elements.flatMap { it.allImplementations }).map { it.origin } +} + +private fun updateKinds(solution: List, elementMapping: ElementMapping) { + for (index in solution.indices) { + val isClass = solution[index] + val element = elementMapping[index * 2].origin + val existingKind = element.kind + if (isClass) { + when (existingKind) { + Implementation.Kind.Interface -> throw IllegalStateException(element.toString()) + null -> element.kind = when (element) { + is Implementation -> { + if (elementMapping.hasInheritors(element)) + Implementation.Kind.AbstractClass + else + Implementation.Kind.FinalClass + } + is Element -> Implementation.Kind.AbstractClass + else -> throw IllegalStateException() + } + } + } else { + element.kind = Implementation.Kind.Interface + } + } +} + +private fun processRequirementsFromConfig(solution: MutableList, elementMapping: ElementMapping) { + fun processParents(element: KindOwner) { + val origin = element.origin + solution[elementMapping[origin]] = false + origin.allParents.forEach { processParents(it) } + } + + for (index in solution.indices) { + val element = elementMapping[index * 2] + if (element.kind != Implementation.Kind.Interface) continue + if (!solution[index]) continue + processParents(element) + } +} + +private fun solve2sat(elements: Collection, elementsToVar: ElementMapping): MutableList { + val (g, gt) = buildGraphs(elements, elementsToVar) + + val used = g.indices.mapTo(mutableListOf()) { false } + val order = mutableListOf() + val comp = g.indices.mapTo(mutableListOf()) { -1 } + val n = g.size + + fun dfs1(v: Int) { + used[v] = true + for (to in g[v]) { + if (!used[to]) { + dfs1(to) + } + } + order += v + } + + fun dfs2(v: Int, cl: Int) { + comp[v] = cl + for (to in gt[v]) { + if (comp[to] == -1) { + dfs2(to, cl) + } + } + } + + for (i in g.indices) { + if (!used[i]) { + dfs1(i) + } + } + + var j = 0 + for (i in g.indices) { + val v = order[n - i - 1] + if (comp[v] == -1) { + dfs2(v, j++) + } + } + + val res = (1..elements.size).mapTo(mutableListOf()) { false } + + for (i in 0 until n step 2) { + if (comp[i] == comp[i + 1]) { + throw IllegalStateException("Somehow there is no solution. Please contact with @dmitriy.novozhilov") + } + res[i / 2] = comp[i] > comp[i + 1] + } + return res +} + + +private fun buildGraphs(elements: Collection, elementMapping: ElementMapping): Pair>, List>> { + val g = (1..elementMapping.size * 2).map { mutableListOf() } + val gt = (1..elementMapping.size * 2).map { mutableListOf() } + + fun Int.direct(): Int = this + fun Int.invert(): Int = this + 1 + + fun extractIndex(element: KindOwner) = elementMapping[element] * 2 + + for (element in elements) { + val elementVar = extractIndex(element) + for (parent in element.allParents) { + val parentVar = extractIndex(parent.origin) + // parent -> element + g[parentVar.direct()] += elementVar.direct() + g[elementVar.invert()] += parentVar.invert() + } + for (i in 0 until element.allParents.size) { + for (j in i + 1 until element.allParents.size) { + val firstParentVar = extractIndex(element.allParents[i].origin) + val secondParentVar = extractIndex(element.allParents[j].origin) + // firstParent -> !secondParent + g[firstParentVar.direct()] += secondParentVar.invert() + g[secondParentVar.direct()] += firstParentVar.invert() + } + } + } + + for (from in g.indices) { + for (to in g[from]) { + gt[to] += from + } + } + return g to gt +} + +private val KindOwner.origin: KindOwner get() = if (this is ImplementationWithArg) implementation else this \ No newline at end of file diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt index 91331f68d44..6fa5a98cacf 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt @@ -20,9 +20,11 @@ fun main(args: Array) { NodeConfigurator.configureFields() detectBaseTransformerTypes(FirTreeBuilder) ImplementationConfigurator.configureImplementations() + configureInterfacesAndAbstractClasses(FirTreeBuilder) removePreviousGeneratedFiles(generationPath) printElements(FirTreeBuilder, generationPath) // printTable(FirTreeBuilder) +// printInterfaceClassGraph(FirTreeBuilder) } fun Element.traverseParents(block: (Element) -> Unit) { @@ -30,6 +32,30 @@ fun Element.traverseParents(block: (Element) -> Unit) { parents.forEach { it.traverseParents(block) } } +private fun printInterfaceClassGraph(builder: AbstractFirTreeBuilder) { + fun Implementation.Kind.toColor(): String = when (this) { + Implementation.Kind.Interface -> "green" + else -> "red" + } + val elements = builder.elements + builder.elements.flatMap { it.allParents } + + File("FirTree.dot").printWriter().use { printer -> + with(printer) { + println("digraph FirTree {") + elements.forEach { + println(" ${it.type} [color=${it.kind!!.toColor()}]") + } + println() + elements.forEach { element -> + element.allParents.forEach { parent -> + println(" ${parent.type} -> ${element.type}") + } + } + println("}") + } + } +} + private fun detectBaseTransformerTypes(builder: AbstractFirTreeBuilder) { val usedAsFieldType = mutableMapOf().withDefault { false } for (element in builder.elements) { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index dd81d890069..593c44a24e9 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -294,6 +294,10 @@ object NodeConfigurator : AbstractFieldConfigurator() { ) } + resolvedDeclarationStatus.configure { + shouldBeAnInterface() + } + constructor.configure { parentArg(memberFunction, "F", constructor) +symbol("FirConstructorSymbol") diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Printer.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Printer.kt index 89708cb325a..e1934549993 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Printer.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Printer.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.tree.generator.model.* import java.io.File import java.io.PrintWriter import java.util.* +import kotlin.math.abs val COPYRIGHT = """ /* @@ -167,10 +168,15 @@ fun Implementation.generateCode(generationPath: String) { } } +val KindOwner.needPureAbstractElement: Boolean get() = (kind != Implementation.Kind.Interface) && !allParents.any { it.kind == Implementation.Kind.AbstractClass } + fun Implementation.collectImports(): List { return element.collectImportsInternal( - listOf(element.fullQualifiedName) + usedTypes.mapNotNull { it.fullQualifiedName } + parents.mapNotNull { it.fullQualifiedName } - + listOfNotNull(pureAbstractElementType.fullQualifiedName?.takeIf { kind != Implementation.Kind.Interface }), + listOf( + element.fullQualifiedName) + + usedTypes.mapNotNull { it.fullQualifiedName } + parents.mapNotNull { it.fullQualifiedName } + + listOfNotNull(pureAbstractElementType.fullQualifiedName?.takeIf { needPureAbstractElement } + ), isImpl = true ) } @@ -182,6 +188,9 @@ fun Element.collectImports(): List { if (isBaseFirElement) { baseTypes += compositeTransformResultType.fullQualifiedName!! } + if (needPureAbstractElement) { + baseTypes += pureAbstractElementType.fullQualifiedName!! + } return collectImportsInternal( baseTypes, isImpl = false @@ -257,34 +266,43 @@ fun PrintWriter.printImplementation(implementation: Implementation) { } with(implementation) { - print("${kind.title} $type") + print("${kind!!.title} $type") print(element.typeParameters) val fieldsWithoutDefault = allFields.filter { it.defaultValue == null && !it.isLateinit } val fieldsWithDefault = allFields.filter { it.defaultValue != null || it.isLateinit } val isInterface = kind == Implementation.Kind.Interface + val isAbstract = kind == Implementation.Kind.AbstractClass - if (!isInterface && fieldsWithoutDefault.isNotEmpty()) { + fun abstract() { + if (isAbstract) { + print("abstract ") + } + } + + if (!isInterface && !isAbstract && fieldsWithoutDefault.isNotEmpty()) { println("(") fieldsWithoutDefault.forEachIndexed { i, field -> val end = if (i == fieldsWithoutDefault.size - 1) "" else "," - printField(field, isImplementation = true, override = true, end = end) + printField(field, isImplementation = true, override = true, end = end, withIndent = true) } print(")") } print(" : ") - if (!isInterface) { + if (!isInterface && !allParents.any { it.kind == Implementation.Kind.AbstractClass }) { print("${pureAbstractElementType.type}(), ") } - print(element.typeWithArguments) - parents.forEach { - print(", ${it.typeWithArguments}") - } +// print(element.typeWithArguments) + print(allParents.joinToString { "${it.typeWithArguments}${it.kind.braces()}" }) println(" {") - if (isInterface) { - allFields.forEach { printField(it, isImplementation = true, override = true, end = "") } + if (isInterface || isAbstract) { + allFields.forEach { + indent() + abstract() + printField(it, isImplementation = true, override = true, end = "", withIndent = false) + } } else { fieldsWithDefault.forEach { printFieldWithDefaultInImplementation(it) @@ -295,7 +313,7 @@ fun PrintWriter.printImplementation(implementation: Implementation) { } element.allFields.filter { it.type.contains("Symbol") && it !is FieldList } - .takeIf { it.isNotEmpty() && !isInterface && !element.type.contains("Reference")} + .takeIf { it.isNotEmpty() && !isInterface && !isAbstract && !element.type.contains("Reference")} ?.let { symbolFields -> indent(1) println("init {") @@ -309,7 +327,7 @@ fun PrintWriter.printImplementation(implementation: Implementation) { } fun Field.acceptString(): String = "${name}${call()}accept(visitor, data)" - if (!isInterface) { + if (!isInterface && !isAbstract) { indent(1) print("override fun acceptChildren(visitor: FirVisitor, data: D) {") @@ -382,8 +400,9 @@ fun PrintWriter.printImplementation(implementation: Implementation) { } indent() + abstract() print("override fun transformChildren(transformer: FirTransformer, data: D): $typeWithArguments") - if (!isInterface) { + if (!isInterface && !isAbstract) { println(" {") for (field in allFields) { when { @@ -456,8 +475,9 @@ fun PrintWriter.printImplementation(implementation: Implementation) { if (!field.needsSeparateTransform) continue println() indent() + abstract() print("override ${field.transformFunctionDeclaration(typeWithArguments)}") - if (isInterface) { + if (isInterface || isAbstract) { println() continue } @@ -486,8 +506,9 @@ fun PrintWriter.printImplementation(implementation: Implementation) { if (element.needTransformOtherChildren) { println() indent() + abstract() print("override fun transformOtherChildren(transformer: FirTransformer, data: D): $typeWithArguments") - if (isInterface) { + if (isInterface || isAbstract) { println() } else { println(" {") @@ -508,8 +529,9 @@ fun PrintWriter.printImplementation(implementation: Implementation) { for (field in allFields.filter { it.withReplace }) { println() indent() + abstract() print("override ${field.replaceFunctionDeclaration()}") - if (isInterface) { + if (isInterface || isAbstract) { println() continue } @@ -606,8 +628,10 @@ fun printTransformer(elements: List, generationPath: String) { } } -fun PrintWriter.printField(field: Field, isImplementation: Boolean, override: Boolean, end: String) { - indent() +fun PrintWriter.printField(field: Field, isImplementation: Boolean, override: Boolean, end: String, withIndent: Boolean) { + if (withIndent) { + indent() + } if (override) { print("override ") } @@ -621,10 +645,10 @@ fun PrintWriter.printField(field: Field, isImplementation: Boolean, override: Bo } val Field.mutableType: String get() = when (this) { - is FieldList -> if (isMutable) "Mutable$typeWithArguments" else typeWithArguments - is FieldWithDefault -> if (isMutable) origin.mutableType else typeWithArguments - else -> typeWithArguments - } + is FieldList -> if (isMutable) "Mutable$typeWithArguments" else typeWithArguments + is FieldWithDefault -> if (isMutable) origin.mutableType else typeWithArguments + else -> typeWithArguments +} fun Field.call(): String = if (nullable) "?." else "." @@ -637,44 +661,68 @@ fun Element.multipleUpperBoundsList(): String { } ?: " " } -fun PrintWriter.printElement(element: Element) { - fun Element.override() { - indent() - if (this != AbstractFirTreeBuilder.baseFirElement) { - print("override ") - } - } +fun Implementation.Kind?.braces(): String = when (this) { + Implementation.Kind.Interface -> "" + Implementation.Kind.OpenClass, Implementation.Kind.AbstractClass -> "()" + else -> throw IllegalStateException(this.toString()) +} +fun PrintWriter.printElement(element: Element) { with(element) { - print("interface $type") + val isInterface = kind == Implementation.Kind.Interface + + fun abstract() { + indent() + if (!isInterface) { + print("abstract ") + } + } + + fun override() { + if (this != AbstractFirTreeBuilder.baseFirElement) { + print("override ") + } + } + + print("${kind!!.title} $type") if (typeArguments.isNotEmpty()) { print(typeArguments.joinToString(", ", "<", ">") { it.toString() }) } - if (parents.isNotEmpty()) { + val needPureAbstractElement = !isInterface && !allParents.any { it.kind == Implementation.Kind.AbstractClass } + + if (parents.isNotEmpty() || needPureAbstractElement) { print(" : ") + if (needPureAbstractElement) { + print("${pureAbstractElementType.type}()") + if (parents.isNotEmpty()) { + print(", ") + } + } print(parents.joinToString(", ") { var result = it.type parentsArguments[it]?.let { arguments -> result += arguments.values.joinToString(", ", "<", ">") { it.typeWithArguments } } - result + result + it.kind.braces() }) } print(multipleUpperBoundsList()) println("{") allFields.forEach { - printField(it, isImplementation = false, override = it.fromParent, end = "") + abstract() + printField(it, isImplementation = false, override = it.fromParent, end = "", withIndent = false) } if (allFields.isNotEmpty()) { println() } + indent() override() println("fun accept(visitor: FirVisitor, data: D): R = visitor.visit$name(this, data)") fields.filter { it.withReplace }.forEach { println() - indent() + abstract() if (it.fromParent) print("override ") println(it.replaceFunctionDeclaration()) } @@ -682,7 +730,7 @@ fun PrintWriter.printElement(element: Element) { for (field in allFields) { if (!field.needsSeparateTransform) continue println() - indent() + abstract() if (field.fromParent) { print("override ") } @@ -690,7 +738,7 @@ fun PrintWriter.printElement(element: Element) { } if (needTransformOtherChildren) { println() - indent() + abstract() if (element.parents.any { it.needTransformOtherChildren }) { print("override ") } @@ -698,6 +746,7 @@ fun PrintWriter.printElement(element: Element) { } if (element == AbstractFirTreeBuilder.baseFirElement) { + require(isInterface) println() indent() println("fun accept(visitor: FirVisitorVoid) = accept(visitor, null)") diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFieldConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFieldConfigurator.kt index ed9c564bd68..dcb80bfd755 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFieldConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFieldConfigurator.kt @@ -72,6 +72,10 @@ abstract class AbstractFieldConfigurator { fun needTransformOtherChildren() { element._needTransformOtherChildren = true } + + fun shouldBeAnInterface() { + element.kind = Implementation.Kind.Interface + } } inline fun Element.configure(block: ConfigureContext.() -> Unit) { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeImplementationConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeImplementationConfigurator.kt index cdf413e4478..90201966279 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeImplementationConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeImplementationConfigurator.kt @@ -180,7 +180,7 @@ abstract class AbstractFirTreeImplementationConfigurator { } } - var kind: Implementation.Kind + var kind: Implementation.Kind? get() = implementation.kind set(value) { implementation.kind = value diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt index 268fb68bd9e..42e77e9a124 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt @@ -8,12 +8,17 @@ package org.jetbrains.kotlin.fir.tree.generator.model import org.jetbrains.kotlin.fir.tree.generator.BASE_PACKAGE import org.jetbrains.kotlin.fir.tree.generator.typeWithArguments +interface KindOwner : Importable { + var kind: Implementation.Kind? + val allParents: List +} + interface FieldContainer { val allFields: List operator fun get(fieldName: String): Field? } -interface AbstractElement : FieldContainer, Importable { +interface AbstractElement : FieldContainer, KindOwner { val fields: Set val parents: List val typeArguments: List @@ -26,6 +31,8 @@ interface AbstractElement : FieldContainer, Importable { val allFirFields: List val defaultImplementation: Implementation? val customImplementations: List + + override val allParents: List get() = parents } class Element(val name: String, kind: Kind) : AbstractElement { @@ -38,6 +45,13 @@ class Element(val name: String, kind: Kind) : AbstractElement { override val customImplementations = mutableListOf() override val typeArguments = mutableListOf() override val parentsArguments = mutableMapOf>() + override var kind: Implementation.Kind? = null + set(value) { + if (value != Implementation.Kind.Interface && value != Implementation.Kind.AbstractClass) { + throw IllegalArgumentException(value.toString()) + } + field = value + } var _needTransformOtherChildren: Boolean = false override var baseTransformerType: Element? = null diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt index 4baef748e4a..65179af8aa2 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt @@ -8,20 +8,21 @@ package org.jetbrains.kotlin.fir.tree.generator.model class ImplementationWithArg( val implementation: Implementation, val argument: Importable? -) : Importable by implementation, FieldContainer by implementation { +) : FieldContainer by implementation, KindOwner by implementation { val element: Element get() = implementation.element } -class Implementation(val element: Element, val name: String?) : Importable, FieldContainer { +class Implementation(val element: Element, val name: String?) : FieldContainer, KindOwner { private val _parents = mutableListOf() val parents: List get() = _parents + override val allParents: List get() = listOf(element) + parents val isDefault = name == null override val type = name ?: element.type + "Impl" override val allFields = element.allFields.toMutableList().mapTo(mutableListOf()) { FieldWithDefault(it) } - var kind: Kind = Kind.FinalClass + override var kind: Kind? = null override val packageName = element.packageName + ".impl" val usedTypes = mutableListOf()