New J2K: Use converter settings values in post processing
This commit is contained in:
committed by
Ilya Kirillov
parent
f9a08ad770
commit
1e7b1f8716
@@ -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 {
|
||||
|
||||
+1
-1
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user