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 {
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<JKTreeRoot>, context: NewJ2kConverterContext) {
val conversion = createRootConversion(context)
conversion.runConversion(trees, context)
val conversions = createConversions(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)
}