New J2K: Use converter settings values in post processing

This commit is contained in:
Ilya Kirillov
2019-01-28 14:07:08 +03:00
committed by Ilya Kirillov
parent f9a08ad770
commit 1e7b1f8716
7 changed files with 36 additions and 12 deletions
@@ -50,6 +50,8 @@ import org.jetbrains.kotlin.idea.quickfix.RemoveModifierFix
import org.jetbrains.kotlin.idea.quickfix.RemoveUselessCastFix
import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.idea.util.getResolutionScope
import org.jetbrains.kotlin.j2k.ConversionContext
import org.jetbrains.kotlin.j2k.ConverterSettings
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.*
@@ -63,7 +65,11 @@ import org.jetbrains.kotlin.utils.mapToIndex
import java.util.*
interface J2kPostProcessing {
fun createAction(element: KtElement, diagnostics: Diagnostics): (() -> Unit)?
fun createAction(element: KtElement, diagnostics: Diagnostics, settings: ConverterSettings?): (() -> Unit)? =
createAction(element, diagnostics)
fun createAction(element: KtElement, diagnostics: Diagnostics): (() -> Unit)? =
createAction(element, diagnostics, null)
val writeActionNeeded: Boolean
}
@@ -32,6 +32,8 @@ import org.jetbrains.kotlin.idea.core.util.EDT
import org.jetbrains.kotlin.idea.util.ImportInsertHelper
import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.idea.util.application.runWriteAction
import org.jetbrains.kotlin.j2k.ConversionContext
import org.jetbrains.kotlin.j2k.ConverterSettings
import org.jetbrains.kotlin.j2k.PostProcessor
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtElement
@@ -60,7 +62,7 @@ class J2kPostProcessor(
}
override fun doAdditionalProcessing(file: KtFile, rangeMarker: RangeMarker?) {
override fun doAdditionalProcessing(file: KtFile, rangeMarker: RangeMarker?,settings: ConverterSettings??) {
fun Processing.flattenToGroups(): List<List<J2kPostProcessing>> =
when (this) {
is SingleProcessing -> listOf(listOf(this.processing))
@@ -80,7 +82,7 @@ class J2kPostProcessor(
do {
var modificationStamp: Long? = file.modificationStamp
val elementToActions = runReadAction {
collectAvailableActions(processings, file, rangeMarker)
collectAvailableActions(processings, file, rangeMarker, settings)
}
withContext(EDT) {
@@ -127,7 +129,8 @@ class J2kPostProcessor(
private fun collectAvailableActions(
processings: Collection<J2kPostProcessing>,
file: KtFile,
rangeMarker: RangeMarker?
rangeMarker: RangeMarker?,
settings: ConverterSettings??
): List<ActionData> {
val diagnostics = analyzeFileRange(file, rangeMarker)
@@ -143,7 +146,7 @@ class J2kPostProcessor(
if (rangeResult == RangeFilterResult.PROCESS) {
processings.forEach { processing ->
val action = processing.createAction(element, diagnostics)
val action = processing.createAction(element, diagnostics, settings)
if (action != null) {
availableActions.add(
ActionData(
@@ -52,6 +52,7 @@ import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.idea.references.readWriteAccess
import org.jetbrains.kotlin.idea.util.getResolutionScope
import org.jetbrains.kotlin.j2k.ConverterSettings
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.*
@@ -105,7 +106,18 @@ object NewJ2KPostProcessingRegistrarImpl : J2KPostProcessingRegistrar {
registerInspectionBasedProcessing(ReplacePutWithAssignmentInspection()),
SingleProcessing(UseExpressionBodyProcessing()),
registerInspectionBasedProcessing(UnnecessaryVariableInspection()),
registerGeneralInspectionBasedProcessing(RedundantExplicitTypeInspection()),
SingleProcessing(
object : J2kPostProcessing {
override val writeActionNeeded: Boolean = true
private val processing = registerGeneralInspectionBasedProcessing(RedundantExplicitTypeInspection())
override fun createAction(element: KtElement, diagnostics: Diagnostics, settings: ConverterSettings?): (() -> Unit)? {
if (settings?.specifyLocalVariableTypeByDefault == true) return null
return processing.processing.createAction(element, diagnostics)
}
}
),
registerGeneralInspectionBasedProcessing(RedundantUnitReturnTypeInspection()),
SingleProcessing(RemoveExplicitPropertyType()),
@@ -392,10 +404,14 @@ object NewJ2KPostProcessingRegistrarImpl : J2KPostProcessingRegistrar {
private class RemoveExplicitPropertyType : J2kPostProcessing {
override val writeActionNeeded = true
override fun createAction(element: KtElement, diagnostics: Diagnostics): (() -> Unit)? {
override fun createAction(element: KtElement, diagnostics: Diagnostics, settings: ConverterSettings?): (() -> Unit)? {
if (element !is KtProperty) return null
val needFieldTypes = settings?.specifyFieldTypeByDefault == true
val needLocalVariablesTypes = settings?.specifyLocalVariableTypeByDefault == true
fun check(element: KtProperty): Boolean {
if (needLocalVariablesTypes && element.isLocal) return false
if (needFieldTypes && element.isMember) return false
val initializer = element.initializer ?: return false
val withoutExpectedType = initializer.analyzeInContext(initializer.getResolutionScope())
val descriptor = element.resolveToDescriptorIfAny() as? CallableDescriptor ?: return false
@@ -38,7 +38,6 @@ object ConversionsRunner {
+PolyadicExpressionConversion(context)
+OperatorExpressionConversion(context)
+ThrowStatementConversion()
+EnumClassConversion()
+ArrayInitializerConversion(context)
+TryStatementConversion(context)
+SynchronizedStatementConversion(context)
@@ -60,7 +59,7 @@ object ConversionsRunner {
+LiteralConversion()
+ForConversion(context)
+LabeledStatementConversion()
+ForInConversion()
+ForInConversion(context)
+TypeParametersNullabilityConversion()
+ArrayOperationsConversion(context)
+BuiltinMembersConversion(context)
@@ -33,6 +33,6 @@ class AfterConversionPass(val project: Project, val postProcessor: PostProcessor
null
}
postProcessor.doAdditionalProcessing(kotlinFile, rangeMarker)
postProcessor.doAdditionalProcessing(kotlinFile, rangeMarker, null)
}
}
@@ -39,7 +39,7 @@ import java.util.*
interface PostProcessor {
fun insertImport(file: KtFile, fqName: FqName)
fun doAdditionalProcessing(file: KtFile, rangeMarker: RangeMarker?)
fun doAdditionalProcessing(file: KtFile, rangeMarker: RangeMarker?, settings: ConverterSettings?)
}
enum class ParseContext {
@@ -36,7 +36,7 @@ abstract class AbstractNewJavaToKotlinConverterSingleFileTest : AbstractJavaToKo
factory.createFileWithLightClassSupport("Dummy.kt", it, file)
}.map {
CommandProcessor.getInstance().runUndoTransparentAction {
postProcessor.doAdditionalProcessing(it, null)
postProcessor.doAdditionalProcessing(it, null, settings)
}
it.text
}.single()