New J2K: remove unused abstractions for conversions running

This commit is contained in:
Ilya Kirillov
2019-08-26 17:33:26 +03:00
parent 131df66087
commit 2f5fa49c52
2 changed files with 65 additions and 132 deletions
@@ -21,76 +21,73 @@ import org.jetbrains.kotlin.nj2k.tree.JKTreeRoot
object ConversionsRunner { object ConversionsRunner {
private fun createRootConversion(context: NewJ2kConverterContext) = private fun createConversions(context: NewJ2kConverterContext) = listOf(
batchPipe { NonCodeElementsConversion(),
//Java --> Kotlin conversions JavaModifiersConversion(context),
+NonCodeElementsConversion() JavaAnnotationsConversion(context),
+JavaModifiersConversion(context) AnnotationClassConversion(context),
+JavaAnnotationsConversion(context) AnnotationConversion(context),
+AnnotationClassConversion(context) ModalityConversion(context),
+AnnotationConversion(context) FunctionAsAnonymousObjectToLambdaConversion(),
+ModalityConversion(context) ReturnStatementInLambdaExpressionConversion(),
+FunctionAsAnonymousObjectToLambdaConversion() BoxedTypeOperationsConversion(context),
+ReturnStatementInLambdaExpressionConversion() AssignmentAsExpressionToAlsoConversion(context),
+BoxedTypeOperationsConversion(context) AssignmentStatementValCreationConversion(context),
+AssignmentAsExpressionToAlsoConversion(context) AssignmentStatementOperatorConversion(),
+AssignmentStatementValCreationConversion(context) AssignmentStatementSimplifyValConversion(),
+AssignmentStatementOperatorConversion() AssignmentStatementSimplifyAlsoConversion(),
+AssignmentStatementSimplifyValConversion() AssignmentStatementSplitAlsoConversion(),
+AssignmentStatementSimplifyAlsoConversion() PolyadicExpressionConversion(),
+AssignmentStatementSplitAlsoConversion() OperatorExpressionConversion(context),
+PolyadicExpressionConversion() AddParenthesisForLineBreaksInBinaryExpression(),
+OperatorExpressionConversion(context) ThrowStatementConversion(),
+AddParenthesisForLineBreaksInBinaryExpression() ArrayInitializerConversion(context),
+ThrowStatementConversion() TryStatementConversion(context),
+ArrayInitializerConversion(context) EnumFieldAccessConversion(context),
+TryStatementConversion(context) StaticMemberAccessConversion(context),
+EnumFieldAccessConversion(context) SynchronizedStatementConversion(context),
+StaticMemberAccessConversion(context) JetbrainsNullableAnnotationsConverter(context),
+SynchronizedStatementConversion(context) DefaultArgumentsConversion(context),
+JetbrainsNullableAnnotationsConverter(context) ConstructorConversion(context),
+DefaultArgumentsConversion(context) StaticInitDeclarationConversion(),
+ConstructorConversion(context) ImplicitInitializerConversion(context),
+StaticInitDeclarationConversion() ParameterModificationInMethodCallsConversion(context),
+ImplicitInitializerConversion(context) BlockToRunConversion(context),
+ParameterModificationInMethodCallsConversion(context) PrimaryConstructorDetectConversion(context),
+BlockToRunConversion(context) InsertDefaultPrimaryConstructorConversion(context),
+PrimaryConstructorDetectConversion(context) FieldToPropertyConversion(),
+InsertDefaultPrimaryConstructorConversion(context) JavaStandardMethodsConversion(context),
+FieldToPropertyConversion() JavaMethodToKotlinFunctionConversion(context),
+JavaStandardMethodsConversion(context) MainFunctionConversion(context),
+JavaMethodToKotlinFunctionConversion(context) AssertStatementConversion(context),
+MainFunctionConversion(context) SwitchStatementConversion(context),
+AssertStatementConversion(context) LiteralConversion(),
+SwitchStatementConversion(context) ForConversion(context),
+LiteralConversion() LabeledStatementConversion(),
+ForConversion(context) ArrayOperationsConversion(context),
+LabeledStatementConversion() EqualsOperatorConversion(context),
+ArrayOperationsConversion(context) TypeMappingConversion(context),
+EqualsOperatorConversion(context) InternalDeclarationConversion(context),
+TypeMappingConversion(context)
+InternalDeclarationConversion(context)
//Kotlin --> Kotlin conversions InnerClassConversion(),
+InnerClassConversion() StaticsToCompanionExtractConversion(),
+StaticsToCompanionExtractConversion() InterfaceWithFieldConversion(),
+InterfaceWithFieldConversion() ClassToObjectPromotionConversion(context),
+ClassToObjectPromotionConversion(context) RemoveWrongExtraModifiersForSingleFunctionsConversion(),
+RemoveWrongExtraModifiersForSingleFunctionsConversion() MethodReferenceToLambdaConversion(context),
+MethodReferenceToLambdaConversion(context) BuiltinMembersConversion(context),
+BuiltinMembersConversion(context) ImplicitCastsConversion(context),
+ImplicitCastsConversion(context) LiteralConversion(),
+LiteralConversion() CollectImportsConversion(context),
FilterImportsConversion(),
+CollectImportsConversion(context) MoveInitBlocksToTheEndConversion(),
+FilterImportsConversion() AddElementsInfoConversion(context)
+MoveInitBlocksToTheEndConversion() )
+AddElementsInfoConversion(context)
}
fun doApply(trees: List<JKTreeRoot>, context: NewJ2kConverterContext) { fun doApply(trees: List<JKTreeRoot>, context: NewJ2kConverterContext) {
val conversion = createRootConversion(context) val conversions = createConversions(context)
conversion.runConversion(trees, context) for (conversion in conversions) {
conversion.runConversion(trees, context)
}
} }
} }
@@ -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>) : BatchBaseConversion {
override fun runConversion(treeRoots: List<JKTreeElement>, context: NewJ2kConverterContext): Boolean {
return conversions.asSequence().map { it.runConversion(treeRoots, context) }.max() ?: false
}
}
class SequentialPipelineConversion(val conversions: List<SequentialBaseConversion>) : 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<JKTreeElement>, 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<T : BatchBaseConversion> {
val conversions = mutableListOf<T>()
operator fun T.unaryPlus() {
conversions += this
}
}
internal inline fun sequentialPipe(crossinline configure: PipelineConversionBuilder<SequentialBaseConversion>.() -> Unit): SequentialPipelineConversion {
return SequentialPipelineConversion(
PipelineConversionBuilder<SequentialBaseConversion>().apply(configure).conversions
)
}
internal inline fun batchPipe(crossinline configure: PipelineConversionBuilder<BatchBaseConversion>.() -> Unit): BatchPipelineConversion {
return BatchPipelineConversion(
PipelineConversionBuilder<BatchBaseConversion>().apply(configure).conversions
)
}
internal fun batchRepeat(batchBaseConversion: BatchBaseConversion): BatchRepeatConversion {
return BatchRepeatConversion(batchBaseConversion)
}
internal fun sequentialRepeat(sequentialBaseConversion: SequentialBaseConversion): SequentialRepeatConversion {
return SequentialRepeatConversion(sequentialBaseConversion)
}