diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/ConversionsRunner.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/ConversionsRunner.kt index f5801f9bf0f..1555ac82a86 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/ConversionsRunner.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/ConversionsRunner.kt @@ -21,76 +21,73 @@ import org.jetbrains.kotlin.nj2k.tree.JKTreeRoot object ConversionsRunner { - private fun createRootConversion(context: NewJ2kConverterContext) = - batchPipe { - //Java --> Kotlin conversions - +NonCodeElementsConversion() - +JavaModifiersConversion(context) - +JavaAnnotationsConversion(context) - +AnnotationClassConversion(context) - +AnnotationConversion(context) - +ModalityConversion(context) - +FunctionAsAnonymousObjectToLambdaConversion() - +ReturnStatementInLambdaExpressionConversion() - +BoxedTypeOperationsConversion(context) - +AssignmentAsExpressionToAlsoConversion(context) - +AssignmentStatementValCreationConversion(context) - +AssignmentStatementOperatorConversion() - +AssignmentStatementSimplifyValConversion() - +AssignmentStatementSimplifyAlsoConversion() - +AssignmentStatementSplitAlsoConversion() - +PolyadicExpressionConversion() - +OperatorExpressionConversion(context) - +AddParenthesisForLineBreaksInBinaryExpression() - +ThrowStatementConversion() - +ArrayInitializerConversion(context) - +TryStatementConversion(context) - +EnumFieldAccessConversion(context) - +StaticMemberAccessConversion(context) - +SynchronizedStatementConversion(context) - +JetbrainsNullableAnnotationsConverter(context) - +DefaultArgumentsConversion(context) - +ConstructorConversion(context) - +StaticInitDeclarationConversion() - +ImplicitInitializerConversion(context) - +ParameterModificationInMethodCallsConversion(context) - +BlockToRunConversion(context) - +PrimaryConstructorDetectConversion(context) - +InsertDefaultPrimaryConstructorConversion(context) - +FieldToPropertyConversion() - +JavaStandardMethodsConversion(context) - +JavaMethodToKotlinFunctionConversion(context) - +MainFunctionConversion(context) - +AssertStatementConversion(context) - +SwitchStatementConversion(context) - +LiteralConversion() - +ForConversion(context) - +LabeledStatementConversion() - +ArrayOperationsConversion(context) - +EqualsOperatorConversion(context) - +TypeMappingConversion(context) - +InternalDeclarationConversion(context) + private fun createConversions(context: NewJ2kConverterContext) = listOf( + NonCodeElementsConversion(), + JavaModifiersConversion(context), + JavaAnnotationsConversion(context), + AnnotationClassConversion(context), + AnnotationConversion(context), + ModalityConversion(context), + FunctionAsAnonymousObjectToLambdaConversion(), + ReturnStatementInLambdaExpressionConversion(), + BoxedTypeOperationsConversion(context), + AssignmentAsExpressionToAlsoConversion(context), + AssignmentStatementValCreationConversion(context), + AssignmentStatementOperatorConversion(), + AssignmentStatementSimplifyValConversion(), + AssignmentStatementSimplifyAlsoConversion(), + AssignmentStatementSplitAlsoConversion(), + PolyadicExpressionConversion(), + OperatorExpressionConversion(context), + AddParenthesisForLineBreaksInBinaryExpression(), + ThrowStatementConversion(), + ArrayInitializerConversion(context), + TryStatementConversion(context), + EnumFieldAccessConversion(context), + StaticMemberAccessConversion(context), + SynchronizedStatementConversion(context), + JetbrainsNullableAnnotationsConverter(context), + DefaultArgumentsConversion(context), + ConstructorConversion(context), + StaticInitDeclarationConversion(), + ImplicitInitializerConversion(context), + ParameterModificationInMethodCallsConversion(context), + BlockToRunConversion(context), + PrimaryConstructorDetectConversion(context), + InsertDefaultPrimaryConstructorConversion(context), + FieldToPropertyConversion(), + JavaStandardMethodsConversion(context), + JavaMethodToKotlinFunctionConversion(context), + MainFunctionConversion(context), + AssertStatementConversion(context), + SwitchStatementConversion(context), + LiteralConversion(), + ForConversion(context), + LabeledStatementConversion(), + ArrayOperationsConversion(context), + EqualsOperatorConversion(context), + TypeMappingConversion(context), + InternalDeclarationConversion(context), - //Kotlin --> Kotlin conversions - +InnerClassConversion() - +StaticsToCompanionExtractConversion() - +InterfaceWithFieldConversion() - +ClassToObjectPromotionConversion(context) - +RemoveWrongExtraModifiersForSingleFunctionsConversion() - +MethodReferenceToLambdaConversion(context) - +BuiltinMembersConversion(context) - +ImplicitCastsConversion(context) - +LiteralConversion() - - +CollectImportsConversion(context) - +FilterImportsConversion() - +MoveInitBlocksToTheEndConversion() - +AddElementsInfoConversion(context) - } + InnerClassConversion(), + StaticsToCompanionExtractConversion(), + InterfaceWithFieldConversion(), + ClassToObjectPromotionConversion(context), + RemoveWrongExtraModifiersForSingleFunctionsConversion(), + MethodReferenceToLambdaConversion(context), + BuiltinMembersConversion(context), + ImplicitCastsConversion(context), + LiteralConversion(), + CollectImportsConversion(context), + FilterImportsConversion(), + MoveInitBlocksToTheEndConversion(), + AddElementsInfoConversion(context) + ) fun doApply(trees: List, context: NewJ2kConverterContext) { - val conversion = createRootConversion(context) - conversion.runConversion(trees, context) + val conversions = createConversions(context) + for (conversion in conversions) { + conversion.runConversion(trees, context) + } } - } \ No newline at end of file diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/CompositeConversion.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/CompositeConversion.kt deleted file mode 100644 index 72e8aa1b3f0..00000000000 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/CompositeConversion.kt +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2010-2018 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.nj2k.conversions - -import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext -import org.jetbrains.kotlin.nj2k.tree.JKTreeElement - -class BatchPipelineConversion(val conversions: List) : BatchBaseConversion { - override fun runConversion(treeRoots: List, context: NewJ2kConverterContext): Boolean { - return conversions.asSequence().map { it.runConversion(treeRoots, context) }.max() ?: false - } -} - -class SequentialPipelineConversion(val conversions: List) : SequentialBaseConversion { - override fun runConversion(treeRoot: JKTreeElement, context: NewJ2kConverterContext): Boolean { - return conversions.asSequence().map { it.runConversion(treeRoot, context) }.max() ?: false - } -} - -class BatchRepeatConversion(val conversion: BatchBaseConversion) : BatchBaseConversion { - - override fun runConversion(treeRoots: List, context: NewJ2kConverterContext): Boolean { - return true in generateSequence { conversion.runConversion(treeRoots, context) }.takeWhile { it } - } - -} - -class SequentialRepeatConversion(val conversion: SequentialBaseConversion) : SequentialBaseConversion { - override fun runConversion(treeRoot: JKTreeElement, context: NewJ2kConverterContext): Boolean { - return true in generateSequence { conversion.runConversion(treeRoot, context) }.takeWhile { it } - } - -} - - -class PipelineConversionBuilder { - val conversions = mutableListOf() - operator fun T.unaryPlus() { - conversions += this - } -} - -internal inline fun sequentialPipe(crossinline configure: PipelineConversionBuilder.() -> Unit): SequentialPipelineConversion { - return SequentialPipelineConversion( - PipelineConversionBuilder().apply(configure).conversions - ) -} - -internal inline fun batchPipe(crossinline configure: PipelineConversionBuilder.() -> Unit): BatchPipelineConversion { - return BatchPipelineConversion( - PipelineConversionBuilder().apply(configure).conversions - ) -} - -internal fun batchRepeat(batchBaseConversion: BatchBaseConversion): BatchRepeatConversion { - return BatchRepeatConversion(batchBaseConversion) -} - -internal fun sequentialRepeat(sequentialBaseConversion: SequentialBaseConversion): SequentialRepeatConversion { - return SequentialRepeatConversion(sequentialBaseConversion) -}