New J2K: correctly handle empty range marker in post processings
This commit is contained in:
+5
-3
@@ -50,9 +50,11 @@ class DiagnosticBasedPostProcessingGroup(diagnosticBasedProcessings: List<Diagno
|
||||
}
|
||||
|
||||
private fun analyzeFileRange(file: KtFile, rangeMarker: RangeMarker?): Diagnostics {
|
||||
val elements =
|
||||
if (rangeMarker == null) listOf(file)
|
||||
else file.elementsInRange(rangeMarker.range!!).filterIsInstance<KtElement>()
|
||||
val elements = when {
|
||||
rangeMarker == null -> listOf(file)
|
||||
rangeMarker.isValid -> file.elementsInRange(rangeMarker.range!!).filterIsInstance<KtElement>()
|
||||
else -> emptyList()
|
||||
}
|
||||
|
||||
return if (elements.isNotEmpty())
|
||||
file.getResolutionFacade().analyzeWithAllCompilerChecks(elements).bindingContext.diagnostics
|
||||
|
||||
@@ -7,10 +7,10 @@ package org.jetbrains.kotlin.nj2k.postProcessing
|
||||
|
||||
import com.intellij.openapi.command.CommandProcessor
|
||||
import com.intellij.openapi.editor.RangeMarker
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.PsiElement
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.jetbrains.kotlin.idea.core.util.EDT
|
||||
import org.jetbrains.kotlin.idea.core.util.range
|
||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
@@ -39,7 +39,8 @@ abstract class ElementsBasedPostProcessing() : SimplePostProcessing() {
|
||||
final override fun applySimpleProcessing(file: KtFile, rangeMarker: RangeMarker?, converterContext: NewJ2kConverterContext) {
|
||||
val elements =
|
||||
rangeMarker?.let { marker ->
|
||||
file.elementsInRange(TextRange(marker.startOffset, marker.endOffset))
|
||||
val range = marker.range ?: return@let emptyList()
|
||||
file.elementsInRange(range)
|
||||
} ?: listOf(file)
|
||||
runProcessing(elements, converterContext)
|
||||
}
|
||||
|
||||
+9
-5
@@ -6,9 +6,9 @@
|
||||
package org.jetbrains.kotlin.nj2k.postProcessing.processings
|
||||
|
||||
import com.intellij.codeInsight.actions.OptimizeImportsProcessor
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager
|
||||
import org.jetbrains.kotlin.idea.core.ShortenReferences
|
||||
import org.jetbrains.kotlin.idea.core.util.range
|
||||
import org.jetbrains.kotlin.idea.formatter.commitAndUnblockDocument
|
||||
import org.jetbrains.kotlin.nj2k.nullabilityAnalysis.AnalysisScope
|
||||
import org.jetbrains.kotlin.nj2k.nullabilityAnalysis.NullabilityAnalysisFacade
|
||||
@@ -47,7 +47,9 @@ val nullabilityProcessing =
|
||||
val shortenReferencesProcessing =
|
||||
postProcessing { file, rangeMarker, _ ->
|
||||
if (rangeMarker != null) {
|
||||
ShortenReferences.DEFAULT.process(file, rangeMarker.startOffset, rangeMarker.endOffset)
|
||||
if (rangeMarker.isValid) {
|
||||
ShortenReferences.DEFAULT.process(file, rangeMarker.startOffset, rangeMarker.endOffset)
|
||||
}
|
||||
} else {
|
||||
ShortenReferences.DEFAULT.process(file)
|
||||
}
|
||||
@@ -55,9 +57,11 @@ val shortenReferencesProcessing =
|
||||
|
||||
val optimizeImportsProcessing =
|
||||
postProcessing { file, rangeMarker, _ ->
|
||||
val elements = if (rangeMarker != null) {
|
||||
file.elementsInRange(TextRange(rangeMarker.startOffset, rangeMarker.endOffset))
|
||||
} else file.children.asList()
|
||||
val elements = when {
|
||||
rangeMarker != null && rangeMarker.isValid -> file.elementsInRange(rangeMarker.range!!)
|
||||
rangeMarker != null && !rangeMarker.isValid -> emptyList()
|
||||
else -> file.children.asList()
|
||||
}
|
||||
val needFormat = elements.any { element ->
|
||||
element is KtElement
|
||||
&& element !is KtImportDirective
|
||||
|
||||
Reference in New Issue
Block a user