New J2K: pass converter context to postprocessing
This commit is contained in:
committed by
Ilya Kirillov
parent
c4a238cca4
commit
39b09b39ff
@@ -21,7 +21,7 @@ import com.intellij.openapi.util.TextRange
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
|
||||
class AfterConversionPass(val project: Project, val postProcessor: PostProcessor) {
|
||||
fun run(kotlinFile: KtFile, range: TextRange?) {
|
||||
fun run(kotlinFile: KtFile, converterContext: ConverterContext?, range: TextRange?) {
|
||||
val rangeMarker = if (range != null) {
|
||||
val document = kotlinFile.viewProvider.document!!
|
||||
val marker = document.createRangeMarker(range.startOffset, range.endOffset)
|
||||
@@ -32,6 +32,6 @@ class AfterConversionPass(val project: Project, val postProcessor: PostProcessor
|
||||
null
|
||||
}
|
||||
|
||||
postProcessor.doAdditionalProcessing(kotlinFile, rangeMarker)
|
||||
postProcessor.doAdditionalProcessing(kotlinFile, converterContext, rangeMarker)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ abstract class J2kConverterExtension : AbstractExtensionPointBean() {
|
||||
services: JavaToKotlinConverterServices
|
||||
): JavaToKotlinConverter
|
||||
|
||||
abstract fun createPostProcessor(formatCode: Boolean, settings: ConverterSettings = ConverterSettings.defaultSettings): PostProcessor
|
||||
abstract fun createPostProcessor(formatCode: Boolean): PostProcessor
|
||||
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -40,7 +40,7 @@ import java.util.*
|
||||
interface PostProcessor {
|
||||
fun insertImport(file: KtFile, fqName: FqName)
|
||||
|
||||
fun doAdditionalProcessing(file: KtFile, rangeMarker: RangeMarker?)
|
||||
fun doAdditionalProcessing(file: KtFile, converterContext: ConverterContext?, rangeMarker: RangeMarker?)
|
||||
}
|
||||
|
||||
enum class ParseContext {
|
||||
@@ -55,10 +55,15 @@ interface ExternalCodeProcessing {
|
||||
|
||||
data class ElementResult(val text: String, val importsToAdd: Set<FqName>, val parseContext: ParseContext)
|
||||
|
||||
data class Result(val results: List<ElementResult?>, val externalCodeProcessing: ExternalCodeProcessing?)
|
||||
data class Result(
|
||||
val results: List<ElementResult?>,
|
||||
val externalCodeProcessing: ExternalCodeProcessing?,
|
||||
val converterContext: ConverterContext?
|
||||
)
|
||||
|
||||
data class FilesResult(val results: List<String>, val externalCodeProcessing: ExternalCodeProcessing?)
|
||||
|
||||
interface ConverterContext
|
||||
|
||||
abstract class JavaToKotlinConverter {
|
||||
protected abstract fun elementsToKotlin(inputElements: List<PsiElement>, processor: WithProgressProcessor): Result
|
||||
@@ -101,7 +106,7 @@ class OldJavaToKotlinConverter(
|
||||
|
||||
result!!.importsToAdd.forEach { postProcessor.insertImport(kotlinFile, it) }
|
||||
|
||||
AfterConversionPass(project, postProcessor).run(kotlinFile, range = null)
|
||||
AfterConversionPass(project, postProcessor).run(kotlinFile, converterContext = null, range = null)
|
||||
|
||||
kotlinFile.text
|
||||
} catch (e: ProcessCanceledException) {
|
||||
@@ -140,7 +145,7 @@ class OldJavaToKotlinConverter(
|
||||
|
||||
val externalCodeProcessing = buildExternalCodeProcessing(usageProcessings, ::inConversionScope)
|
||||
|
||||
return Result(results, externalCodeProcessing)
|
||||
return Result(results, externalCodeProcessing, null)
|
||||
} catch (e: ElementCreationStackTraceRequiredException) {
|
||||
// if we got this exception then we need to turn element creation stack traces on to get better diagnostic
|
||||
Element.saveCreationStacktraces = true
|
||||
|
||||
Reference in New Issue
Block a user