diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt index 2610baf5150..1eadd8fd5cc 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.scopes.impl.FirClassSubstitutionScope import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.types.* +import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitor import org.jetbrains.kotlin.fir.visitors.FirVisitor import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrStatement @@ -60,7 +61,7 @@ class Fir2IrVisitor( private val sourceManager: PsiSourceManager, override val irBuiltIns: IrBuiltIns, private val fakeOverrideMode: FakeOverrideMode -) : FirVisitor(), IrGeneratorContextInterface { +) : FirDefaultVisitor(), IrGeneratorContextInterface { companion object { private val NEGATED_OPERATIONS: Set = EnumSet.of(FirOperation.NOT_EQ, FirOperation.NOT_IDENTITY) @@ -297,10 +298,6 @@ class Fir2IrVisitor( } } - override fun visitEnumEntry(enumEntry: FirEnumEntry, data: Any?): IrElement { - return visitRegularClass(enumEntry, data) - } - private fun IrFunction.addDispatchReceiverParameter(containingClass: IrClass) { val thisOrigin = IrDeclarationOrigin.DEFINED val thisType = containingClass.thisReceiver!!.type @@ -665,18 +662,6 @@ class Fir2IrVisitor( return wrappedArgumentExpression.expression.toIrExpression() } - override fun visitNamedArgumentExpression(namedArgumentExpression: FirNamedArgumentExpression, data: Any?): IrElement { - return visitWrappedArgumentExpression(namedArgumentExpression, data) - } - - override fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression, data: Any?): IrElement { - return visitWrappedArgumentExpression(lambdaArgumentExpression, data) - } - - override fun visitSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: Any?): IrElement { - return visitWrappedArgumentExpression(spreadArgumentExpression, data) - } - private fun FirReference.statementOrigin(): IrStatementOrigin? { return when (this) { is FirPropertyFromParameterCallableReference -> IrStatementOrigin.INITIALIZE_PROPERTY_FROM_PARAMETER @@ -809,10 +794,6 @@ class Fir2IrVisitor( return functionCall.toIrExpression(functionCall.typeRef).applyCallArguments(functionCall).applyReceivers(functionCall) } - override fun visitComponentCall(componentCall: FirComponentCall, data: Any?): IrElement { - return visitFunctionCall(componentCall, data) - } - override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: Any?): IrElement { return annotationCall.toIrExpression().applyCallArguments(annotationCall) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirProviderImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirProviderImpl.kt index df66adc192f..d901a779276 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirProviderImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirProviderImpl.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol import org.jetbrains.kotlin.fir.types.ConeLookupTagBasedType import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef +import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitorVoid import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName @@ -59,7 +60,7 @@ class FirProviderImpl(val session: FirSession) : FirProvider() { val packageName = file.packageFqName state.fileMap.merge(packageName, listOf(file)) { a, b -> a + b } - file.acceptChildren(object : FirVisitorVoid() { + file.acceptChildren(object : FirDefaultVisitorVoid() { override fun visitElement(element: FirElement) {} @@ -102,10 +103,6 @@ class FirProviderImpl(val session: FirSession) : FirProvider() { override fun visitProperty(property: FirProperty) { visitCallableMemberDeclaration(property) } - - override fun visitEnumEntry(enumEntry: FirEnumEntry) { - visitRegularClass(enumEntry) - } }) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractPhaseTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractPhaseTransformer.kt index 17a986883ed..86a86aab158 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractPhaseTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractPhaseTransformer.kt @@ -12,11 +12,11 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.symbols.FirSymbolOwner import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult -import org.jetbrains.kotlin.fir.visitors.FirTransformer +import org.jetbrains.kotlin.fir.visitors.FirDefaultTransformer abstract class FirAbstractPhaseTransformer( protected val transformerPhase: FirResolvePhase -) : FirTransformer() { +) : FirDefaultTransformer() { abstract val session: FirSession diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt index 9ff1f30bca1..85fa1ecab9e 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt @@ -162,10 +162,6 @@ open class FirBodyResolveTransformer( return result } - override fun transformEnumEntry(enumEntry: FirEnumEntry, data: Any?): CompositeTransformResult { - return transformRegularClass(enumEntry, data) - } - override fun transformUncheckedNotNullCast( uncheckedNotNullCast: FirUncheckedNotNullCast, data: Any? @@ -272,13 +268,6 @@ open class FirBodyResolveTransformer( } } - override fun transformCallableReferenceAccess( - callableReferenceAccess: FirCallableReferenceAccess, - data: Any? - ): CompositeTransformResult { - return transformQualifiedAccessExpression(callableReferenceAccess, data) - } - override fun transformVariableAssignment( variableAssignment: FirVariableAssignment, data: Any? @@ -486,10 +475,6 @@ open class FirBodyResolveTransformer( } - override fun transformComponentCall(componentCall: FirComponentCall, data: Any?): CompositeTransformResult { - return transformFunctionCall(componentCall, data) - } - // override fun transformNamedReference(namedReference: FirNamedReference, data: Any?): CompositeTransformResult { // if (namedReference is FirErrorNamedReference || namedReference is FirResolvedCallableReference) return namedReference.compose() // val referents = data as? List ?: return namedReference.compose() @@ -523,21 +508,6 @@ open class FirBodyResolveTransformer( return result } - override fun transformBreakExpression(breakExpression: FirBreakExpression, data: Any?): CompositeTransformResult { - return transformJump(breakExpression, data) - } - - override fun transformContinueExpression( - continueExpression: FirContinueExpression, - data: Any? - ): CompositeTransformResult { - return transformJump(continueExpression, data) - } - - override fun transformReturnExpression(returnExpression: FirReturnExpression, data: Any?): CompositeTransformResult { - return transformJump(returnExpression, data) - } - override fun transformThrowExpression(throwExpression: FirThrowExpression, data: Any?): CompositeTransformResult { return transformExpression(throwExpression, data).also { dataFlowAnalyzer.exitThrowExceptionNode(it.single as FirThrowExpression) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt index fa0e372eca3..4614ff89ef3 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt @@ -57,13 +57,6 @@ class FirCallCompletionResultsWriterTransformer( ).compose() } - override fun transformCallableReferenceAccess( - callableReferenceAccess: FirCallableReferenceAccess, - data: Nothing? - ): CompositeTransformResult { - return transformQualifiedAccessExpression(callableReferenceAccess, data) - } - override fun transformVariableAssignment( variableAssignment: FirVariableAssignment, data: Nothing? @@ -137,10 +130,6 @@ class FirCallCompletionResultsWriterTransformer( } - override fun transformComponentCall(componentCall: FirComponentCall, data: Nothing?): CompositeTransformResult { - return transformFunctionCall(componentCall, data) - } - override fun transformAnonymousFunction( anonymousFunction: FirAnonymousFunction, data: Nothing? diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSpecificTypeResolverTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSpecificTypeResolverTransformer.kt index 8578a436837..01468643bdd 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSpecificTypeResolverTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSpecificTypeResolverTransformer.kt @@ -58,34 +58,4 @@ class FirSpecificTypeResolverTransformer( override fun transformImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: Nothing?): CompositeTransformResult { return implicitTypeRef.compose() } - - override fun transformErrorTypeRef(errorTypeRef: FirErrorTypeRef, data: Nothing?): CompositeTransformResult { - return transformTypeRef(errorTypeRef, data) - } - - override fun transformResolvedFunctionTypeRef( - resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, - data: Nothing? - ): CompositeTransformResult { - return transformTypeRef(resolvedFunctionTypeRef, data) - } - - override fun transformTypeRefWithNullability( - typeRefWithNullability: FirTypeRefWithNullability, - data: Nothing? - ): CompositeTransformResult { - return transformTypeRef(typeRefWithNullability, data) - } - - override fun transformUserTypeRef(userTypeRef: FirUserTypeRef, data: Nothing?): CompositeTransformResult { - return transformTypeRef(userTypeRef, data) - } - - override fun transformDynamicTypeRef(dynamicTypeRef: FirDynamicTypeRef, data: Nothing?): CompositeTransformResult { - return transformTypeRef(dynamicTypeRef, data) - } - - override fun transformDelegatedTypeRef(delegatedTypeRef: FirDelegatedTypeRef, data: Nothing?): CompositeTransformResult { - return transformTypeRef(delegatedTypeRef, data) - } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt index b24037e0e48..1aafec93f19 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt @@ -162,8 +162,4 @@ class FirStatusResolveTransformer : FirAbstractTreeTransformer(phase = FirResolv override fun transformValueParameter(valueParameter: FirValueParameter, data: Nothing?): CompositeTransformResult { return transformDeclaration(valueParameter, data) } - - override fun transformEnumEntry(enumEntry: FirEnumEntry, data: Nothing?): CompositeTransformResult { - return transformRegularClass(enumEntry, data) - } } \ No newline at end of file diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypeResolverTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypeResolverTransformer.kt index 5d10d01a8aa..45c9730a348 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypeResolverTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypeResolverTransformer.kt @@ -129,10 +129,6 @@ class FirSupertypeResolverTransformer : FirAbstractTreeTransformer(phase = FirRe return resolveNestedClassesSupertypes(transformedClass, data) } - override fun transformEnumEntry(enumEntry: FirEnumEntry, data: Nothing?): CompositeTransformResult { - return transformRegularClass(enumEntry, data) - } - private fun FirClassLikeDeclaration<*>.matchesRequestedDeclaration(): Boolean { if (knownFirClassLikeDeclaration != null) return knownFirClassLikeDeclaration == this return symbol.classId == requestedClassId diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt index 0c19f56481b..97f5dd2506d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt @@ -96,44 +96,6 @@ open class FirTypeResolveTransformer : FirAbstractTreeTransformerWithSuperTypes( return implicitTypeRef.compose() } - override fun transformResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: Nothing?): CompositeTransformResult { - return transformTypeRef(resolvedTypeRef, data) - } - - override fun transformErrorTypeRef(errorTypeRef: FirErrorTypeRef, data: Nothing?): CompositeTransformResult { - return transformTypeRef(errorTypeRef, data) - } - - override fun transformResolvedFunctionTypeRef( - resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, - data: Nothing? - ): CompositeTransformResult { - return transformTypeRef(resolvedFunctionTypeRef, data) - } - - override fun transformTypeRefWithNullability( - typeRefWithNullability: FirTypeRefWithNullability, - data: Nothing? - ): CompositeTransformResult { - return transformTypeRef(typeRefWithNullability, data) - } - - override fun transformUserTypeRef(userTypeRef: FirUserTypeRef, data: Nothing?): CompositeTransformResult { - return transformTypeRef(userTypeRef, data) - } - - override fun transformDynamicTypeRef(dynamicTypeRef: FirDynamicTypeRef, data: Nothing?): CompositeTransformResult { - return transformTypeRef(dynamicTypeRef, data) - } - - override fun transformFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: Nothing?): CompositeTransformResult { - return transformTypeRef(functionTypeRef, data) - } - - override fun transformDelegatedTypeRef(delegatedTypeRef: FirDelegatedTypeRef, data: Nothing?): CompositeTransformResult { - return transformTypeRef(delegatedTypeRef, data) - } - override fun transformTypeRef(typeRef: FirTypeRef, data: Nothing?): CompositeTransformResult { return FirSpecificTypeResolverTransformer(towerScope, FirPosition.OTHER, session).transformTypeRef(typeRef, data) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeTransformer.kt deleted file mode 100644 index b6d47df7948..00000000000 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeTransformer.kt +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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.resolve.transformers - -import org.jetbrains.kotlin.fir.FirElement -import org.jetbrains.kotlin.fir.types.* -import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult -import org.jetbrains.kotlin.fir.visitors.FirTransformer -import org.jetbrains.kotlin.fir.visitors.compose - -abstract class FirTypeTransformer : FirTransformer() { - override fun transformElement(element: E, data: D): CompositeTransformResult { - return element.compose() - } - - override fun transformTypeRef(typeRef: FirTypeRef, data: D): CompositeTransformResult { - return transformElement(typeRef, data) - } - - override fun transformDelegatedTypeRef(delegatedTypeRef: FirDelegatedTypeRef, data: D): CompositeTransformResult { - return transformTypeRef(delegatedTypeRef, data) - } - - override fun transformImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: D): CompositeTransformResult { - return transformTypeRef(implicitTypeRef, data) - } - - override fun transformResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: D): CompositeTransformResult { - return transformTypeRef(resolvedTypeRef, data) - } - - override fun transformErrorTypeRef(errorTypeRef: FirErrorTypeRef, data: D): CompositeTransformResult { - return transformResolvedTypeRef(errorTypeRef, data) - } - - override fun transformResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: D): CompositeTransformResult { - return transformResolvedTypeRef(resolvedFunctionTypeRef, data) - } - - override fun transformTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability, data: D): CompositeTransformResult { - return transformTypeRef(typeRefWithNullability, data) - } - - override fun transformDynamicTypeRef(dynamicTypeRef: FirDynamicTypeRef, data: D): CompositeTransformResult { - return transformTypeRefWithNullability(dynamicTypeRef, data) - } - - override fun transformFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: D): CompositeTransformResult { - return transformTypeRefWithNullability(functionTypeRef, data) - } - - override fun transformUserTypeRef(userTypeRef: FirUserTypeRef, data: D): CompositeTransformResult { - return transformTypeRefWithNullability(userTypeRef, data) - } - - -} \ No newline at end of file diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/TransformUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/TransformUtils.kt index 35bf4181dad..8f9422d41ba 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/TransformUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/TransformUtils.kt @@ -13,10 +13,11 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult +import org.jetbrains.kotlin.fir.visitors.FirDefaultTransformer import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.compose -internal object MapArguments : FirTransformer>() { +internal object MapArguments : FirDefaultTransformer>() { override fun transformElement(element: E, data: Map): CompositeTransformResult { return ((data[element] ?: element) as E).compose() } @@ -34,36 +35,23 @@ internal object MapArguments : FirTransformer>() { ): CompositeTransformResult { return (wrappedArgumentExpression.transformChildren(this, data) as FirStatement).compose() } - - override fun transformLambdaArgumentExpression( - lambdaArgumentExpression: FirLambdaArgumentExpression, - data: Map - ): CompositeTransformResult { - return transformWrappedArgumentExpression(lambdaArgumentExpression, data) - } - - override fun transformSpreadArgumentExpression( - spreadArgumentExpression: FirSpreadArgumentExpression, - data: Map - ): CompositeTransformResult { - return transformWrappedArgumentExpression(spreadArgumentExpression, data) - } - - override fun transformNamedArgumentExpression( - namedArgumentExpression: FirNamedArgumentExpression, - data: Map - ): CompositeTransformResult { - return transformWrappedArgumentExpression(namedArgumentExpression, data) - } } -internal object StoreType : FirTypeTransformer() { +internal object StoreType : FirDefaultTransformer() { + override fun transformElement(element: E, data: FirTypeRef): CompositeTransformResult { + return element.compose() + } + override fun transformTypeRef(typeRef: FirTypeRef, data: FirTypeRef): CompositeTransformResult { return data.compose() } } -internal object TransformImplicitType : FirTypeTransformer() { +internal object TransformImplicitType : FirDefaultTransformer() { + override fun transformElement(element: E, data: FirTypeRef): CompositeTransformResult { + return element.compose() + } + override fun transformImplicitTypeRef( implicitTypeRef: FirImplicitTypeRef, data: FirTypeRef @@ -73,7 +61,11 @@ internal object TransformImplicitType : FirTypeTransformer() { } -internal object StoreNameReference : FirTypeTransformer() { +internal object StoreNameReference : FirDefaultTransformer() { + override fun transformElement(element: E, data: FirNamedReference): CompositeTransformResult { + return element.compose() + } + override fun transformNamedReference( namedReference: FirNamedReference, data: FirNamedReference diff --git a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirResolveBench.kt b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirResolveBench.kt index 538db877472..7dd870a3e62 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirResolveBench.kt +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirResolveBench.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression import org.jetbrains.kotlin.fir.resolve.FirProvider import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl import org.jetbrains.kotlin.fir.types.* +import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitorVoid import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid import org.jetbrains.kotlin.psi.KtFile @@ -172,7 +173,7 @@ class FirResolveBench(val withProgress: Boolean) { val fileDocumentManager = FileDocumentManager.getInstance() firFiles.forEach { - it.accept(object : FirVisitorVoid() { + it.accept(object : FirDefaultVisitorVoid() { fun reportProblem(problem: String, psi: PsiElement) { val document = try { @@ -202,10 +203,6 @@ class FirResolveBench(val withProgress: Boolean) { visitElement(functionCall) } - override fun visitComponentCall(componentCall: FirComponentCall) { - visitFunctionCall(componentCall) - } - override fun visitQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression) { val typeRef = qualifiedAccessExpression.typeRef if (typeRef is FirResolvedTypeRef) { @@ -218,10 +215,6 @@ class FirResolveBench(val withProgress: Boolean) { visitElement(qualifiedAccessExpression) } - override fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess) { - visitQualifiedAccessExpression(callableReferenceAccess) - } - override fun visitTypeRef(typeRef: FirTypeRef) { unresolvedTypes++ @@ -232,34 +225,6 @@ class FirResolveBench(val withProgress: Boolean) { } } - override fun visitDelegatedTypeRef(delegatedTypeRef: FirDelegatedTypeRef) { - visitTypeRef(delegatedTypeRef) - } - - override fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef) { - visitResolvedTypeRef(errorTypeRef) - } - - override fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef) { - visitResolvedTypeRef(resolvedFunctionTypeRef) - } - - override fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability) { - visitTypeRef(typeRefWithNullability) - } - - override fun visitDynamicTypeRef(dynamicTypeRef: FirDynamicTypeRef) { - visitTypeRefWithNullability(dynamicTypeRef) - } - - override fun visitFunctionTypeRef(functionTypeRef: FirFunctionTypeRef) { - visitTypeRefWithNullability(functionTypeRef) - } - - override fun visitUserTypeRef(userTypeRef: FirUserTypeRef) { - visitTypeRefWithNullability(userTypeRef) - } - override fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef) { if (implicitTypeRef is FirResolvedTypeRef) { visitResolvedTypeRef(implicitTypeRef) diff --git a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirDefaultTransformer.kt b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirDefaultTransformer.kt new file mode 100644 index 00000000000..eea501a3a13 --- /dev/null +++ b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirDefaultTransformer.kt @@ -0,0 +1,89 @@ +/* + * 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.visitors + +import org.jetbrains.kotlin.fir.declarations.FirDeclaration +import org.jetbrains.kotlin.fir.declarations.FirEnumEntry +import org.jetbrains.kotlin.fir.expressions.* +import org.jetbrains.kotlin.fir.types.* + +abstract class FirDefaultTransformer : FirTransformer() { + override fun transformDelegatedTypeRef(delegatedTypeRef: FirDelegatedTypeRef, data: D): CompositeTransformResult { + return transformTypeRef(delegatedTypeRef, data) + } + + override fun transformImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: D): CompositeTransformResult { + return transformTypeRef(implicitTypeRef, data) + } + + override fun transformResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: D): CompositeTransformResult { + return transformTypeRef(resolvedTypeRef, data) + } + + override fun transformErrorTypeRef(errorTypeRef: FirErrorTypeRef, data: D): CompositeTransformResult { + return transformResolvedTypeRef(errorTypeRef, data) + } + + override fun transformResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: D): CompositeTransformResult { + return transformResolvedTypeRef(resolvedFunctionTypeRef, data) + } + + override fun transformTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability, data: D): CompositeTransformResult { + return transformTypeRef(typeRefWithNullability, data) + } + + override fun transformDynamicTypeRef(dynamicTypeRef: FirDynamicTypeRef, data: D): CompositeTransformResult { + return transformTypeRefWithNullability(dynamicTypeRef, data) + } + + override fun transformFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: D): CompositeTransformResult { + return transformTypeRefWithNullability(functionTypeRef, data) + } + + override fun transformUserTypeRef(userTypeRef: FirUserTypeRef, data: D): CompositeTransformResult { + return transformTypeRefWithNullability(userTypeRef, data) + } + + override fun transformCallableReferenceAccess( + callableReferenceAccess: FirCallableReferenceAccess, + data: D + ): CompositeTransformResult { + return transformQualifiedAccessExpression(callableReferenceAccess, data) + } + + override fun transformComponentCall(componentCall: FirComponentCall, data: D): CompositeTransformResult { + return transformFunctionCall(componentCall, data) + } + + override fun transformReturnExpression(returnExpression: FirReturnExpression, data: D): CompositeTransformResult { + return transformJump(returnExpression, data) + } + + override fun transformContinueExpression(continueExpression: FirContinueExpression, data: D): CompositeTransformResult { + return transformJump(continueExpression, data) + } + + override fun transformBreakExpression(breakExpression: FirBreakExpression, data: D): CompositeTransformResult { + return transformJump(breakExpression, data) + } + + override fun transformEnumEntry(enumEntry: FirEnumEntry, data: D): CompositeTransformResult { + return transformRegularClass(enumEntry, data) + } + + override fun transformLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression, data: D): CompositeTransformResult { + return transformWrappedArgumentExpression(lambdaArgumentExpression, data) + } + + override fun transformSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: D): CompositeTransformResult { + return transformWrappedArgumentExpression(spreadArgumentExpression, data) + } + + override fun transformNamedArgumentExpression(namedArgumentExpression: FirNamedArgumentExpression, data: D): CompositeTransformResult { + return transformWrappedArgumentExpression(namedArgumentExpression, data) + } +} + diff --git a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt new file mode 100644 index 00000000000..e594316fd8b --- /dev/null +++ b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt @@ -0,0 +1,85 @@ +/* + * 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.visitors + +import org.jetbrains.kotlin.fir.declarations.FirEnumEntry +import org.jetbrains.kotlin.fir.expressions.* +import org.jetbrains.kotlin.fir.types.* + +abstract class FirDefaultVisitor : FirVisitor() { + override fun visitDelegatedTypeRef(delegatedTypeRef: FirDelegatedTypeRef, data: D): R { + return visitTypeRef(delegatedTypeRef, data) + } + + override fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: D): R { + return visitTypeRef(implicitTypeRef, data) + } + + override fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: D): R { + return visitTypeRef(resolvedTypeRef, data) + } + + override fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef, data: D): R { + return visitResolvedTypeRef(errorTypeRef, data) + } + + override fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: D): R { + return visitResolvedTypeRef(resolvedFunctionTypeRef, data) + } + + override fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability, data: D): R { + return visitTypeRef(typeRefWithNullability, data) + } + + override fun visitDynamicTypeRef(dynamicTypeRef: FirDynamicTypeRef, data: D): R { + return visitTypeRefWithNullability(dynamicTypeRef, data) + } + + override fun visitFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: D): R { + return visitTypeRefWithNullability(functionTypeRef, data) + } + + override fun visitUserTypeRef(userTypeRef: FirUserTypeRef, data: D): R { + return visitTypeRefWithNullability(userTypeRef, data) + } + + override fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess, data: D): R { + return visitQualifiedAccessExpression(callableReferenceAccess, data) + } + + override fun visitComponentCall(componentCall: FirComponentCall, data: D): R { + return visitFunctionCall(componentCall, data) + } + + override fun visitReturnExpression(returnExpression: FirReturnExpression, data: D): R { + return visitJump(returnExpression, data) + } + + override fun visitContinueExpression(continueExpression: FirContinueExpression, data: D): R { + return visitJump(continueExpression, data) + } + + override fun visitBreakExpression(breakExpression: FirBreakExpression, data: D): R { + return visitJump(breakExpression, data) + } + + override fun visitEnumEntry(enumEntry: FirEnumEntry, data: D): R { + return visitRegularClass(enumEntry, data) + } + + override fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression, data: D): R { + return visitWrappedArgumentExpression(lambdaArgumentExpression, data) + } + + override fun visitSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: D): R { + return visitWrappedArgumentExpression(spreadArgumentExpression, data) + } + + override fun visitNamedArgumentExpression(namedArgumentExpression: FirNamedArgumentExpression, data: D): R { + return visitWrappedArgumentExpression(namedArgumentExpression, data) + } +} + diff --git a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt new file mode 100644 index 00000000000..e14ba808628 --- /dev/null +++ b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt @@ -0,0 +1,84 @@ +/* + * 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.visitors + +import org.jetbrains.kotlin.fir.declarations.FirEnumEntry +import org.jetbrains.kotlin.fir.expressions.* +import org.jetbrains.kotlin.fir.types.* + +abstract class FirDefaultVisitorVoid : FirVisitorVoid() { + override fun visitDelegatedTypeRef(delegatedTypeRef: FirDelegatedTypeRef) { + return visitTypeRef(delegatedTypeRef) + } + + override fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef) { + return visitTypeRef(implicitTypeRef) + } + + override fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef) { + return visitTypeRef(resolvedTypeRef) + } + + override fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef) { + return visitResolvedTypeRef(errorTypeRef) + } + + override fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef) { + return visitResolvedTypeRef(resolvedFunctionTypeRef) + } + + override fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability) { + return visitTypeRef(typeRefWithNullability) + } + + override fun visitDynamicTypeRef(dynamicTypeRef: FirDynamicTypeRef) { + return visitTypeRefWithNullability(dynamicTypeRef) + } + + override fun visitFunctionTypeRef(functionTypeRef: FirFunctionTypeRef) { + return visitTypeRefWithNullability(functionTypeRef) + } + + override fun visitUserTypeRef(userTypeRef: FirUserTypeRef) { + return visitTypeRefWithNullability(userTypeRef) + } + + override fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess) { + return visitQualifiedAccessExpression(callableReferenceAccess) + } + + override fun visitComponentCall(componentCall: FirComponentCall) { + return visitFunctionCall(componentCall) + } + + override fun visitReturnExpression(returnExpression: FirReturnExpression) { + return visitJump(returnExpression) + } + + override fun visitContinueExpression(continueExpression: FirContinueExpression) { + return visitJump(continueExpression) + } + + override fun visitBreakExpression(breakExpression: FirBreakExpression) { + return visitJump(breakExpression) + } + + override fun visitEnumEntry(enumEntry: FirEnumEntry) { + return visitRegularClass(enumEntry) + } + + override fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression) { + return visitWrappedArgumentExpression(lambdaArgumentExpression) + } + + override fun visitSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression) { + return visitWrappedArgumentExpression(spreadArgumentExpression) + } + + override fun visitNamedArgumentExpression(namedArgumentExpression: FirNamedArgumentExpression) { + return visitWrappedArgumentExpression(namedArgumentExpression) + } +} \ No newline at end of file