Code corrections on code review
This commit is contained in:
@@ -75,7 +75,7 @@ public class JavaToKotlinAction : AnAction() {
|
||||
ProgressManager.getInstance().runProcessWithProgressSynchronously(
|
||||
{
|
||||
runReadAction {
|
||||
externalCodeUpdate = converterResult!!.externalCodeProcessing(ProgressManager.getInstance().getProgressIndicator())
|
||||
externalCodeUpdate = converterResult!!.externalCodeProcessing.prepareWriteOperation(ProgressManager.getInstance().getProgressIndicator())
|
||||
}
|
||||
},
|
||||
title,
|
||||
@@ -89,7 +89,7 @@ public class JavaToKotlinAction : AnAction() {
|
||||
|
||||
val newFiles = saveResults(javaFiles, converterResult!!.results.map { it!!.text /*conversion of a file always succeeds*/ })
|
||||
|
||||
externalCodeUpdate?.invoke()
|
||||
externalCodeUpdate!!.invoke()
|
||||
|
||||
newFiles.singleOrNull()?.let {
|
||||
FileEditorManager.getInstance(project).openFile(it, true)
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.idea.codeInsight
|
||||
|
||||
import com.intellij.codeInsight.CodeInsightSettings
|
||||
import com.intellij.codeInsight.editorActions.CopyPastePostProcessor
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.diagnostic.Logger
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.editor.RangeMarker
|
||||
@@ -28,7 +29,9 @@ import com.intellij.openapi.util.Ref
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.codeInsight.shorten.performDelayedShortening
|
||||
@@ -51,7 +54,6 @@ import org.jetbrains.kotlin.resolve.ImportPath
|
||||
import org.jetbrains.kotlin.resolve.JetModuleUtil
|
||||
import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver
|
||||
import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver.LookupMode
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.getImportableDescriptor
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.isExtension
|
||||
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||
import org.jetbrains.kotlin.types.ErrorUtils
|
||||
@@ -268,7 +270,7 @@ public class KotlinCopyPasteReferenceProcessor() : CopyPastePostProcessor<Kotlin
|
||||
if (referencedFqNames.singleOrNull() == originalFqName) return null
|
||||
|
||||
// check that descriptor to import exists and is accessible from the current module
|
||||
if (!findImportableDescriptors(originalFqName, file).any { KotlinReferenceData.Kind.fromDescriptor(it) == refData.kind }) {
|
||||
if (findImportableDescriptors(originalFqName, file).none { KotlinReferenceData.Kind.fromDescriptor(it) == refData.kind }) {
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -327,7 +329,9 @@ public class KotlinCopyPasteReferenceProcessor() : CopyPastePostProcessor<Kotlin
|
||||
private fun showRestoreReferencesDialog(project: Project, referencesToRestore: List<ReferenceToRestoreData>): Collection<ReferenceToRestoreData> {
|
||||
val fqNames = referencesToRestore.map { it.refData.fqName }.toSortedSet()
|
||||
|
||||
declarationsToImportSuggested = fqNames
|
||||
if (ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
declarationsToImportSuggested = fqNames
|
||||
}
|
||||
|
||||
val shouldShowDialog = CodeInsightSettings.getInstance().ADD_IMPORTS_ON_PASTE == CodeInsightSettings.ASK
|
||||
if (!shouldShowDialog || referencesToRestore.isEmpty()) {
|
||||
@@ -352,7 +356,7 @@ public class KotlinCopyPasteReferenceProcessor() : CopyPastePostProcessor<Kotlin
|
||||
}
|
||||
|
||||
companion object {
|
||||
// for tests
|
||||
[TestOnly]
|
||||
public var declarationsToImportSuggested: Collection<String> = emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -29,6 +29,7 @@ import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.PsiJavaFile
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.idea.codeInsight.KotlinCopyPasteReferenceProcessor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.KotlinReferenceData
|
||||
import org.jetbrains.kotlin.idea.editor.JetEditorOptions
|
||||
@@ -223,7 +224,7 @@ public class ConvertJavaCopyPastePostProcessor : CopyPastePostProcessor<TextBloc
|
||||
}
|
||||
|
||||
companion object {
|
||||
// used for testing
|
||||
[TestOnly]
|
||||
public var conversionPerformed: Boolean = false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,14 +57,15 @@ data class DataForConversion private(
|
||||
}
|
||||
|
||||
private fun clipTextIfNeeded(file: PsiJavaFile, fileText: String, startOffsets: IntArray, endOffsets: IntArray): String? {
|
||||
fun canDropRange(range: TextRange)
|
||||
= startOffsets.indices.all { range !in TextRange(startOffsets[it], endOffsets[it]) }
|
||||
val ranges = startOffsets.indices.map { TextRange(startOffsets[it], endOffsets[it]) }.sortBy { it.start }
|
||||
|
||||
fun canDropRange(range: TextRange) = ranges.all { range !in it }
|
||||
|
||||
val rangesToDrop = ArrayList<TextRange>()
|
||||
for (i in startOffsets.indices) {
|
||||
val start = startOffsets[i]
|
||||
val end = endOffsets[i]
|
||||
val range = TextRange(start, end)
|
||||
for (range in ranges) {
|
||||
val start = range.start
|
||||
val end = range.end
|
||||
if (start == end) continue
|
||||
|
||||
val startToken = file.findElementAt(start)!!
|
||||
val elementToClipLeft = startToken.maximalParentToClip(range)
|
||||
@@ -197,7 +198,7 @@ data class DataForConversion private(
|
||||
if (!canDropElementFromText(child)) return null
|
||||
clipTo = childRange.end
|
||||
}
|
||||
else { // rangeBound is inside element's range
|
||||
else { // rangeBound is inside child's range
|
||||
if (child is PsiWhiteSpace) break // no need to cut whitespace - we can leave it as is
|
||||
return tryClipSide(child, rangeBound, rangeFunction, childrenFunction)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user