New J2K: pass converter context to postprocessing
This commit is contained in:
committed by
Ilya Kirillov
parent
c4a238cca4
commit
39b09b39ff
+9
-2
@@ -44,6 +44,7 @@ import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils
|
|||||||
import org.jetbrains.kotlin.idea.debugger.KotlinEditorTextProvider
|
import org.jetbrains.kotlin.idea.debugger.KotlinEditorTextProvider
|
||||||
import org.jetbrains.kotlin.idea.debugger.evaluate.compilation.DebugLabelPropertyDescriptorProvider
|
import org.jetbrains.kotlin.idea.debugger.evaluate.compilation.DebugLabelPropertyDescriptorProvider
|
||||||
import org.jetbrains.kotlin.idea.j2k.JavaToKotlinConverterFactory
|
import org.jetbrains.kotlin.idea.j2k.JavaToKotlinConverterFactory
|
||||||
|
import org.jetbrains.kotlin.idea.refactoring.convertToKotlin
|
||||||
import org.jetbrains.kotlin.idea.refactoring.j2k
|
import org.jetbrains.kotlin.idea.refactoring.j2k
|
||||||
import org.jetbrains.kotlin.idea.refactoring.j2kText
|
import org.jetbrains.kotlin.idea.refactoring.j2kText
|
||||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
||||||
@@ -242,7 +243,8 @@ class KotlinCodeFragmentFactory : CodeFragmentFactory() {
|
|||||||
var convertedFragment: KtExpressionCodeFragment? = null
|
var convertedFragment: KtExpressionCodeFragment? = null
|
||||||
project.executeWriteCommand("Convert java expression to kotlin in Evaluate Expression") {
|
project.executeWriteCommand("Convert java expression to kotlin in Evaluate Expression") {
|
||||||
try {
|
try {
|
||||||
val newText = javaExpression.j2kText()
|
val (elementResults, _, conversionContext) = javaExpression.convertToKotlin() ?: return@executeWriteCommand
|
||||||
|
val newText = elementResults.singleOrNull()?.text
|
||||||
val newImports = importList?.j2kText()
|
val newImports = importList?.j2kText()
|
||||||
if (newText != null) {
|
if (newText != null) {
|
||||||
convertedFragment = KtExpressionCodeFragment(
|
convertedFragment = KtExpressionCodeFragment(
|
||||||
@@ -253,7 +255,12 @@ class KotlinCodeFragmentFactory : CodeFragmentFactory() {
|
|||||||
kotlinCodeFragment.context
|
kotlinCodeFragment.context
|
||||||
)
|
)
|
||||||
|
|
||||||
AfterConversionPass(project, JavaToKotlinConverterFactory.createPostProcessor(formatCode = false)).run(convertedFragment!!, range = null)
|
AfterConversionPass(project, JavaToKotlinConverterFactory.createPostProcessor(formatCode = false))
|
||||||
|
.run(
|
||||||
|
convertedFragment!!,
|
||||||
|
conversionContext,
|
||||||
|
range = null
|
||||||
|
)
|
||||||
}
|
}
|
||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
// ignored because text can be invalid
|
// ignored because text can be invalid
|
||||||
|
|||||||
+25
-7
@@ -40,6 +40,7 @@ import org.jetbrains.kotlin.idea.util.ImportInsertHelper
|
|||||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||||
import org.jetbrains.kotlin.j2k.AfterConversionPass
|
import org.jetbrains.kotlin.j2k.AfterConversionPass
|
||||||
|
import org.jetbrains.kotlin.j2k.ConverterContext
|
||||||
import org.jetbrains.kotlin.j2k.ConverterSettings
|
import org.jetbrains.kotlin.j2k.ConverterSettings
|
||||||
import org.jetbrains.kotlin.j2k.ParseContext
|
import org.jetbrains.kotlin.j2k.ParseContext
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
@@ -85,14 +86,19 @@ class ConvertJavaCopyPasteProcessor : CopyPastePostProcessor<TextBlockTransferab
|
|||||||
|
|
||||||
if (isNoConversionPosition(targetFile, bounds.startOffset)) return
|
if (isNoConversionPosition(targetFile, bounds.startOffset)) return
|
||||||
|
|
||||||
data class Result(val text: String?, val referenceData: Collection<KotlinReferenceData>, val explicitImports: Set<FqName>)
|
data class Result(
|
||||||
|
val text: String?,
|
||||||
|
val referenceData: Collection<KotlinReferenceData>,
|
||||||
|
val explicitImports: Set<FqName>,
|
||||||
|
val converterContext: ConverterContext?
|
||||||
|
)
|
||||||
|
|
||||||
fun doConversion(): Result {
|
fun doConversion(): Result {
|
||||||
val dataForConversion = DataForConversion.prepare(data, project)
|
val dataForConversion = DataForConversion.prepare(data, project)
|
||||||
val result = dataForConversion.elementsAndTexts.convertCodeToKotlin(project)
|
val result = dataForConversion.elementsAndTexts.convertCodeToKotlin(project)
|
||||||
val referenceData = buildReferenceData(result.text, result.parseContext, dataForConversion.importsAndPackage, targetFile)
|
val referenceData = buildReferenceData(result.text, result.parseContext, dataForConversion.importsAndPackage, targetFile)
|
||||||
val text = if (result.textChanged) result.text else null
|
val text = if (result.textChanged) result.text else null
|
||||||
return Result(text, referenceData, result.importsToAdd)
|
return Result(text, referenceData, result.importsToAdd, result.converterContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun insertImports(bounds: TextRange, referenceData: Collection<KotlinReferenceData>, explicitImports: Collection<FqName>): TextRange? {
|
fun insertImports(bounds: TextRange, referenceData: Collection<KotlinReferenceData>, explicitImports: Collection<FqName>): TextRange? {
|
||||||
@@ -153,7 +159,12 @@ class ConvertJavaCopyPasteProcessor : CopyPastePostProcessor<TextBlockTransferab
|
|||||||
val newBounds = insertImports(boundsAfterReplace, referenceData, explicitImports)
|
val newBounds = insertImports(boundsAfterReplace, referenceData, explicitImports)
|
||||||
|
|
||||||
PsiDocumentManager.getInstance(project).commitAllDocuments()
|
PsiDocumentManager.getInstance(project).commitAllDocuments()
|
||||||
AfterConversionPass(project, JavaToKotlinConverterFactory.createPostProcessor(formatCode = true)).run(targetFile, newBounds)
|
AfterConversionPass(project, JavaToKotlinConverterFactory.createPostProcessor(formatCode = true))
|
||||||
|
.run(
|
||||||
|
targetFile,
|
||||||
|
conversionResult?.converterContext,
|
||||||
|
newBounds
|
||||||
|
)
|
||||||
|
|
||||||
conversionPerformed = true
|
conversionPerformed = true
|
||||||
}
|
}
|
||||||
@@ -202,7 +213,8 @@ internal class ConversionResult(
|
|||||||
val text: String,
|
val text: String,
|
||||||
val parseContext: ParseContext,
|
val parseContext: ParseContext,
|
||||||
val importsToAdd: Set<FqName>,
|
val importsToAdd: Set<FqName>,
|
||||||
val textChanged: Boolean
|
val textChanged: Boolean,
|
||||||
|
val converterContext: ConverterContext?
|
||||||
)
|
)
|
||||||
|
|
||||||
internal fun ElementAndTextList.convertCodeToKotlin(project: Project): ConversionResult {
|
internal fun ElementAndTextList.convertCodeToKotlin(project: Project): ConversionResult {
|
||||||
@@ -214,7 +226,7 @@ internal fun ElementAndTextList.convertCodeToKotlin(project: Project): Conversio
|
|||||||
)
|
)
|
||||||
|
|
||||||
val inputElements = this.toList().filterIsInstance<PsiElement>()
|
val inputElements = this.toList().filterIsInstance<PsiElement>()
|
||||||
val results =
|
val (results, _, converterContext) =
|
||||||
ProgressManager.getInstance().runProcessWithProgressSynchronously(
|
ProgressManager.getInstance().runProcessWithProgressSynchronously(
|
||||||
ThrowableComputable<org.jetbrains.kotlin.j2k.Result, Exception> {
|
ThrowableComputable<org.jetbrains.kotlin.j2k.Result, Exception> {
|
||||||
runReadAction { converter.elementsToKotlin(inputElements) }
|
runReadAction { converter.elementsToKotlin(inputElements) }
|
||||||
@@ -222,7 +234,7 @@ internal fun ElementAndTextList.convertCodeToKotlin(project: Project): Conversio
|
|||||||
JavaToKotlinAction.title,
|
JavaToKotlinAction.title,
|
||||||
false,
|
false,
|
||||||
project
|
project
|
||||||
).results
|
)
|
||||||
|
|
||||||
|
|
||||||
val importsToAdd = LinkedHashSet<FqName>()
|
val importsToAdd = LinkedHashSet<FqName>()
|
||||||
@@ -257,7 +269,13 @@ internal fun ElementAndTextList.convertCodeToKotlin(project: Project): Conversio
|
|||||||
|
|
||||||
val convertedCode = convertedCodeBuilder.toString()
|
val convertedCode = convertedCodeBuilder.toString()
|
||||||
val originalCode = originalCodeBuilder.toString()
|
val originalCode = originalCodeBuilder.toString()
|
||||||
return ConversionResult(convertedCode, parseContext ?: ParseContext.CODE_BLOCK, importsToAdd, convertedCode != originalCode)
|
return ConversionResult(
|
||||||
|
convertedCode,
|
||||||
|
parseContext ?: ParseContext.CODE_BLOCK,
|
||||||
|
importsToAdd,
|
||||||
|
convertedCode != originalCode,
|
||||||
|
converterContext
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun isNoConversionPosition(file: KtFile, offset: Int): Boolean {
|
internal fun isNoConversionPosition(file: KtFile, offset: Int): Boolean {
|
||||||
|
|||||||
+8
-2
@@ -109,7 +109,8 @@ class ConvertTextJavaCopyPasteProcessor : CopyPastePostProcessor<TextBlockTransf
|
|||||||
val additionalImports = dataForConversion.tryResolveImports(targetFile)
|
val additionalImports = dataForConversion.tryResolveImports(targetFile)
|
||||||
var convertedImportsText = additionalImports.convertCodeToKotlin(project).text
|
var convertedImportsText = additionalImports.convertCodeToKotlin(project).text
|
||||||
|
|
||||||
val convertedText = dataForConversion.convertCodeToKotlin(project).text
|
val convertedResult = dataForConversion.convertCodeToKotlin(project)
|
||||||
|
val convertedText = convertedResult.text
|
||||||
|
|
||||||
val newBounds = runWriteAction {
|
val newBounds = runWriteAction {
|
||||||
|
|
||||||
@@ -129,7 +130,12 @@ class ConvertTextJavaCopyPasteProcessor : CopyPastePostProcessor<TextBlockTransf
|
|||||||
}
|
}
|
||||||
|
|
||||||
psiDocumentManager.commitAllDocuments()
|
psiDocumentManager.commitAllDocuments()
|
||||||
AfterConversionPass(project, JavaToKotlinConverterFactory.createPostProcessor(formatCode = true)).run(targetFile, newBounds)
|
AfterConversionPass(project, JavaToKotlinConverterFactory.createPostProcessor(formatCode = true))
|
||||||
|
.run(
|
||||||
|
targetFile,
|
||||||
|
convertedResult.converterContext,
|
||||||
|
newBounds
|
||||||
|
)
|
||||||
|
|
||||||
conversionPerformed = true
|
conversionPerformed = true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,13 +32,12 @@ import org.jetbrains.kotlin.idea.core.util.EDT
|
|||||||
import org.jetbrains.kotlin.idea.util.ImportInsertHelper
|
import org.jetbrains.kotlin.idea.util.ImportInsertHelper
|
||||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||||
|
import org.jetbrains.kotlin.j2k.ConverterContext
|
||||||
import org.jetbrains.kotlin.j2k.PostProcessor
|
import org.jetbrains.kotlin.j2k.PostProcessor
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.KtPsiFactory
|
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.elementsInRange
|
import org.jetbrains.kotlin.psi.psiUtil.elementsInRange
|
||||||
import org.jetbrains.kotlin.resolve.ImportPath
|
|
||||||
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics
|
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@@ -58,7 +57,7 @@ class J2kPostProcessor(private val formatCode: Boolean) : PostProcessor {
|
|||||||
PROCESS
|
PROCESS
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun doAdditionalProcessing(file: KtFile, rangeMarker: RangeMarker?) =
|
override fun doAdditionalProcessing(file: KtFile, converterContext: ConverterContext?, rangeMarker: RangeMarker?) =
|
||||||
runBlocking(EDT.ModalityStateElement(ModalityState.defaultModalityState())) {
|
runBlocking(EDT.ModalityStateElement(ModalityState.defaultModalityState())) {
|
||||||
do {
|
do {
|
||||||
var modificationStamp: Long? = file.modificationStamp
|
var modificationStamp: Long? = file.modificationStamp
|
||||||
|
|||||||
@@ -16,6 +16,6 @@ object JavaToKotlinConverterFactory {
|
|||||||
): JavaToKotlinConverter =
|
): JavaToKotlinConverter =
|
||||||
J2kConverterExtension.extension.createJavaToKotlinConverter(project, settings, services)
|
J2kConverterExtension.extension.createJavaToKotlinConverter(project, settings, services)
|
||||||
|
|
||||||
fun createPostProcessor(formatCode: Boolean, settings: ConverterSettings = ConverterSettings.defaultSettings): PostProcessor =
|
fun createPostProcessor(formatCode: Boolean): PostProcessor =
|
||||||
J2kConverterExtension.extension.createPostProcessor(formatCode, settings)
|
J2kConverterExtension.extension.createPostProcessor(formatCode)
|
||||||
}
|
}
|
||||||
@@ -13,6 +13,6 @@ class OldJ2kConverterExtension : J2kConverterExtension() {
|
|||||||
): JavaToKotlinConverter =
|
): JavaToKotlinConverter =
|
||||||
OldJavaToKotlinConverter(project, settings, services)
|
OldJavaToKotlinConverter(project, settings, services)
|
||||||
|
|
||||||
override fun createPostProcessor(formatCode: Boolean, settings: ConverterSettings): PostProcessor =
|
override fun createPostProcessor(formatCode: Boolean): PostProcessor =
|
||||||
J2kPostProcessor(formatCode)
|
J2kPostProcessor(formatCode)
|
||||||
}
|
}
|
||||||
@@ -84,7 +84,6 @@ import org.jetbrains.kotlin.idea.refactoring.rename.canonicalRender
|
|||||||
import org.jetbrains.kotlin.idea.util.*
|
import org.jetbrains.kotlin.idea.util.*
|
||||||
import org.jetbrains.kotlin.idea.util.string.collapseSpaces
|
import org.jetbrains.kotlin.idea.util.string.collapseSpaces
|
||||||
import org.jetbrains.kotlin.j2k.ConverterSettings
|
import org.jetbrains.kotlin.j2k.ConverterSettings
|
||||||
import org.jetbrains.kotlin.j2k.JavaToKotlinConverter
|
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.FqNameUnsafe
|
import org.jetbrains.kotlin.name.FqNameUnsafe
|
||||||
@@ -643,7 +642,10 @@ fun createJavaClass(klass: KtClass, targetClass: PsiClass?, forcePlainClass: Boo
|
|||||||
return javaClass
|
return javaClass
|
||||||
}
|
}
|
||||||
|
|
||||||
fun PsiElement.j2kText(): String? {
|
fun PsiElement.j2kText(): String? =
|
||||||
|
convertToKotlin()?.results?.single()?.text //TODO: insert imports
|
||||||
|
|
||||||
|
fun PsiElement.convertToKotlin(): org.jetbrains.kotlin.j2k.Result? {
|
||||||
if (language != JavaLanguage.INSTANCE) return null
|
if (language != JavaLanguage.INSTANCE) return null
|
||||||
|
|
||||||
val j2kConverter =
|
val j2kConverter =
|
||||||
@@ -652,7 +654,7 @@ fun PsiElement.j2kText(): String? {
|
|||||||
ConverterSettings.defaultSettings,
|
ConverterSettings.defaultSettings,
|
||||||
IdeaJavaToKotlinServices
|
IdeaJavaToKotlinServices
|
||||||
)
|
)
|
||||||
return j2kConverter.elementsToKotlin(listOf(this)).results.single()?.text ?: return null //TODO: insert imports
|
return j2kConverter.elementsToKotlin(listOf(this))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun PsiExpression.j2k(): KtExpression? {
|
fun PsiExpression.j2k(): KtExpression? {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import com.intellij.openapi.util.TextRange
|
|||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
|
||||||
class AfterConversionPass(val project: Project, val postProcessor: PostProcessor) {
|
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 rangeMarker = if (range != null) {
|
||||||
val document = kotlinFile.viewProvider.document!!
|
val document = kotlinFile.viewProvider.document!!
|
||||||
val marker = document.createRangeMarker(range.startOffset, range.endOffset)
|
val marker = document.createRangeMarker(range.startOffset, range.endOffset)
|
||||||
@@ -32,6 +32,6 @@ class AfterConversionPass(val project: Project, val postProcessor: PostProcessor
|
|||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
|
||||||
postProcessor.doAdditionalProcessing(kotlinFile, rangeMarker)
|
postProcessor.doAdditionalProcessing(kotlinFile, converterContext, rangeMarker)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ abstract class J2kConverterExtension : AbstractExtensionPointBean() {
|
|||||||
services: JavaToKotlinConverterServices
|
services: JavaToKotlinConverterServices
|
||||||
): JavaToKotlinConverter
|
): JavaToKotlinConverter
|
||||||
|
|
||||||
abstract fun createPostProcessor(formatCode: Boolean, settings: ConverterSettings = ConverterSettings.defaultSettings): PostProcessor
|
abstract fun createPostProcessor(formatCode: Boolean): PostProcessor
|
||||||
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ import java.util.*
|
|||||||
interface PostProcessor {
|
interface PostProcessor {
|
||||||
fun insertImport(file: KtFile, fqName: FqName)
|
fun insertImport(file: KtFile, fqName: FqName)
|
||||||
|
|
||||||
fun doAdditionalProcessing(file: KtFile, rangeMarker: RangeMarker?)
|
fun doAdditionalProcessing(file: KtFile, converterContext: ConverterContext?, rangeMarker: RangeMarker?)
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class ParseContext {
|
enum class ParseContext {
|
||||||
@@ -55,10 +55,15 @@ interface ExternalCodeProcessing {
|
|||||||
|
|
||||||
data class ElementResult(val text: String, val importsToAdd: Set<FqName>, val parseContext: ParseContext)
|
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?)
|
data class FilesResult(val results: List<String>, val externalCodeProcessing: ExternalCodeProcessing?)
|
||||||
|
|
||||||
|
interface ConverterContext
|
||||||
|
|
||||||
abstract class JavaToKotlinConverter {
|
abstract class JavaToKotlinConverter {
|
||||||
protected abstract fun elementsToKotlin(inputElements: List<PsiElement>, processor: WithProgressProcessor): Result
|
protected abstract fun elementsToKotlin(inputElements: List<PsiElement>, processor: WithProgressProcessor): Result
|
||||||
@@ -101,7 +106,7 @@ class OldJavaToKotlinConverter(
|
|||||||
|
|
||||||
result!!.importsToAdd.forEach { postProcessor.insertImport(kotlinFile, it) }
|
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
|
kotlinFile.text
|
||||||
} catch (e: ProcessCanceledException) {
|
} catch (e: ProcessCanceledException) {
|
||||||
@@ -140,7 +145,7 @@ class OldJavaToKotlinConverter(
|
|||||||
|
|
||||||
val externalCodeProcessing = buildExternalCodeProcessing(usageProcessings, ::inConversionScope)
|
val externalCodeProcessing = buildExternalCodeProcessing(usageProcessings, ::inConversionScope)
|
||||||
|
|
||||||
return Result(results, externalCodeProcessing)
|
return Result(results, externalCodeProcessing, null)
|
||||||
} catch (e: ElementCreationStackTraceRequiredException) {
|
} catch (e: ElementCreationStackTraceRequiredException) {
|
||||||
// if we got this exception then we need to turn element creation stack traces on to get better diagnostic
|
// if we got this exception then we need to turn element creation stack traces on to get better diagnostic
|
||||||
Element.saveCreationStacktraces = true
|
Element.saveCreationStacktraces = true
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.idea.formatter.commitAndUnblockDocument
|
|||||||
import org.jetbrains.kotlin.idea.util.ImportInsertHelper
|
import org.jetbrains.kotlin.idea.util.ImportInsertHelper
|
||||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||||
import org.jetbrains.kotlin.j2k.ConverterSettings
|
import org.jetbrains.kotlin.j2k.ConverterContext
|
||||||
import org.jetbrains.kotlin.j2k.PostProcessor
|
import org.jetbrains.kotlin.j2k.PostProcessor
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.nj2k.nullabilityAnalysis.AnalysisScope
|
import org.jetbrains.kotlin.nj2k.nullabilityAnalysis.AnalysisScope
|
||||||
@@ -47,10 +47,7 @@ import org.jetbrains.kotlin.psi.psiUtil.elementsInRange
|
|||||||
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics
|
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class NewJ2kPostProcessor(
|
class NewJ2kPostProcessor(private val formatCode: Boolean) : PostProcessor {
|
||||||
private val formatCode: Boolean,
|
|
||||||
private val settings: ConverterSettings?
|
|
||||||
) : PostProcessor {
|
|
||||||
override fun insertImport(file: KtFile, fqName: FqName) {
|
override fun insertImport(file: KtFile, fqName: FqName) {
|
||||||
ApplicationManager.getApplication().invokeAndWait {
|
ApplicationManager.getApplication().invokeAndWait {
|
||||||
runWriteAction {
|
runWriteAction {
|
||||||
@@ -66,10 +63,14 @@ class NewJ2kPostProcessor(
|
|||||||
PROCESS
|
PROCESS
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun List<NewJ2kPostProcessing>.runProcessings(file: KtFile, rangeMarker: RangeMarker?): Boolean {
|
private suspend fun List<NewJ2kPostProcessing>.runProcessings(
|
||||||
|
file: KtFile,
|
||||||
|
converterContext: NewJ2kConverterContext,
|
||||||
|
rangeMarker: RangeMarker?
|
||||||
|
): Boolean {
|
||||||
var modificationStamp: Long? = file.modificationStamp
|
var modificationStamp: Long? = file.modificationStamp
|
||||||
val elementToActions = runReadAction {
|
val elementToActions = runReadAction {
|
||||||
collectAvailableActions(this, file, rangeMarker)
|
collectAvailableActions(this, file, converterContext, rangeMarker)
|
||||||
}
|
}
|
||||||
withContext(EDT) {
|
withContext(EDT) {
|
||||||
for ((element, action, _, writeActionNeeded) in elementToActions) {
|
for ((element, action, _, writeActionNeeded) in elementToActions) {
|
||||||
@@ -100,23 +101,24 @@ class NewJ2kPostProcessor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private suspend fun Processing.runProcessings(file: KtFile, rangeMarker: RangeMarker?) {
|
private suspend fun Processing.runProcessings(file: KtFile, converterContext: NewJ2kConverterContext, rangeMarker: RangeMarker?) {
|
||||||
when (this) {
|
when (this) {
|
||||||
is SingleOneTimeProcessing -> listOf(processing).runProcessings(file, rangeMarker)
|
is SingleOneTimeProcessing -> listOf(processing).runProcessings(file, converterContext, rangeMarker)
|
||||||
is RepeatableProcessingGroup ->
|
is RepeatableProcessingGroup ->
|
||||||
do {
|
do {
|
||||||
val needContinue = processings.runProcessings(file, rangeMarker)
|
val needContinue = processings.runProcessings(file, converterContext, rangeMarker)
|
||||||
} while (needContinue)
|
} while (needContinue)
|
||||||
is OneTimeProcessingGroup ->
|
is OneTimeProcessingGroup ->
|
||||||
processings.forEach { it.runProcessings(file, rangeMarker) }
|
processings.forEach { it.runProcessings(file, converterContext, rangeMarker) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun doAdditionalProcessing(file: KtFile, rangeMarker: RangeMarker?) {
|
override fun doAdditionalProcessing(file: KtFile, converterContext: ConverterContext?, rangeMarker: RangeMarker?) {
|
||||||
runBlocking(EDT.ModalityStateElement(ModalityState.defaultModalityState())) {
|
runBlocking(EDT.ModalityStateElement(ModalityState.defaultModalityState())) {
|
||||||
withContext(EDT) {
|
withContext(EDT) {
|
||||||
NullabilityAnalysisFacade(
|
NullabilityAnalysisFacade(
|
||||||
|
converterContext as NewJ2kConverterContext,
|
||||||
getTypeElementNullability = ::nullabilityByUndefinedNullabilityComment,
|
getTypeElementNullability = ::nullabilityByUndefinedNullabilityComment,
|
||||||
prepareTypeElement = ::prepareTypeElementByMakingAllTypesNullableConsideringNullabilityComment,
|
prepareTypeElement = ::prepareTypeElementByMakingAllTypesNullableConsideringNullabilityComment,
|
||||||
debugPrint = false
|
debugPrint = false
|
||||||
@@ -131,7 +133,7 @@ class NewJ2kPostProcessor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
NewJ2KPostProcessingRegistrar.mainProcessings.runProcessings(file, rangeMarker)
|
NewJ2KPostProcessingRegistrar.mainProcessings.runProcessings(file, converterContext as NewJ2kConverterContext, rangeMarker)
|
||||||
withContext(EDT) {
|
withContext(EDT) {
|
||||||
runWriteAction {
|
runWriteAction {
|
||||||
file.commitAndUnblockDocument()
|
file.commitAndUnblockDocument()
|
||||||
@@ -159,6 +161,7 @@ class NewJ2kPostProcessor(
|
|||||||
private fun collectAvailableActions(
|
private fun collectAvailableActions(
|
||||||
processings: Collection<NewJ2kPostProcessing>,
|
processings: Collection<NewJ2kPostProcessing>,
|
||||||
file: KtFile,
|
file: KtFile,
|
||||||
|
context: NewJ2kConverterContext,
|
||||||
rangeMarker: RangeMarker?
|
rangeMarker: RangeMarker?
|
||||||
): List<ActionData> {
|
): List<ActionData> {
|
||||||
val diagnostics = analyzeFileRange(file, rangeMarker)
|
val diagnostics = analyzeFileRange(file, rangeMarker)
|
||||||
@@ -174,7 +177,7 @@ class NewJ2kPostProcessor(
|
|||||||
|
|
||||||
if (rangeResult == RangeFilterResult.PROCESS) {
|
if (rangeResult == RangeFilterResult.PROCESS) {
|
||||||
processings.forEach { processing ->
|
processings.forEach { processing ->
|
||||||
val action = processing.createAction(element, diagnostics, settings)
|
val action = processing.createAction(element, diagnostics, context.converter.settings)
|
||||||
if (action != null) {
|
if (action != null) {
|
||||||
availableActions.add(
|
availableActions.add(
|
||||||
ActionData(
|
ActionData(
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ class NewJ2kConverterExtension : J2kConverterExtension() {
|
|||||||
): JavaToKotlinConverter =
|
): JavaToKotlinConverter =
|
||||||
NewJavaToKotlinConverter(project, settings, services)
|
NewJavaToKotlinConverter(project, settings, services)
|
||||||
|
|
||||||
override fun createPostProcessor(formatCode: Boolean, settings: ConverterSettings): PostProcessor =
|
override fun createPostProcessor(formatCode: Boolean): PostProcessor =
|
||||||
NewJ2kPostProcessor(formatCode, settings)
|
NewJ2kPostProcessor(formatCode)
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.nj2k.tree.JKTreeRoot
|
|||||||
|
|
||||||
object ConversionsRunner {
|
object ConversionsRunner {
|
||||||
|
|
||||||
private fun createRootConversion(context: ConversionContext) =
|
private fun createRootConversion(context: NewJ2kConverterContext) =
|
||||||
batchPipe {
|
batchPipe {
|
||||||
//Java --> Kotlin conversions
|
//Java --> Kotlin conversions
|
||||||
+NonCodeElementsConversion()
|
+NonCodeElementsConversion()
|
||||||
@@ -82,9 +82,10 @@ object ConversionsRunner {
|
|||||||
+ClassToObjectPromotionConversion(context)
|
+ClassToObjectPromotionConversion(context)
|
||||||
+CollectImportsConversion(context)
|
+CollectImportsConversion(context)
|
||||||
+SortClassMembersConversion()
|
+SortClassMembersConversion()
|
||||||
|
+AddElementsInfoConversion(context)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun doApply(trees: List<JKTreeRoot>, context: ConversionContext) {
|
fun doApply(trees: List<JKTreeRoot>, context: NewJ2kConverterContext) {
|
||||||
val conversion = createRootConversion(context)
|
val conversion = createRootConversion(context)
|
||||||
conversion.runConversion(trees, context)
|
conversion.runConversion(trees, context)
|
||||||
}
|
}
|
||||||
|
|||||||
+22
-5
@@ -5,17 +5,18 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k
|
package org.jetbrains.kotlin.nj2k
|
||||||
|
|
||||||
|
import com.intellij.openapi.command.impl.DummyProject
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.j2k.*
|
import org.jetbrains.kotlin.j2k.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.JKElement
|
|
||||||
|
|
||||||
data class ConversionContext(
|
data class NewJ2kConverterContext(
|
||||||
val symbolProvider: JKSymbolProvider,
|
val symbolProvider: JKSymbolProvider,
|
||||||
val converter: NewJavaToKotlinConverter,
|
val converter: NewJavaToKotlinConverter,
|
||||||
val inConversionContext: (PsiElement) -> Boolean,
|
val inConversionContext: (PsiElement) -> Boolean,
|
||||||
val importStorage: ImportStorage
|
val importStorage: ImportStorage,
|
||||||
) {
|
val elementsInfoStorage: ElementInfoStorage
|
||||||
|
) : ConverterContext {
|
||||||
val project: Project get() = converter.project
|
val project: Project get() = converter.project
|
||||||
val typeFlavorCalculator = TypeFlavorCalculator(object : TypeFlavorConverterFacade {
|
val typeFlavorCalculator = TypeFlavorCalculator(object : TypeFlavorConverterFacade {
|
||||||
override val referenceSearcher: ReferenceSearcher
|
override val referenceSearcher: ReferenceSearcher
|
||||||
@@ -28,4 +29,20 @@ data class ConversionContext(
|
|||||||
override fun inConversionScope(element: PsiElement): Boolean = inConversionContext(element)
|
override fun inConversionScope(element: PsiElement): Boolean = inConversionContext(element)
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
companion object {
|
||||||
|
val DUMMY =
|
||||||
|
NewJ2kConverterContext(
|
||||||
|
JKSymbolProvider(),
|
||||||
|
NewJavaToKotlinConverter(
|
||||||
|
DummyProject.getInstance(),
|
||||||
|
ConverterSettings.defaultSettings,
|
||||||
|
EmptyJavaToKotlinServices
|
||||||
|
),
|
||||||
|
{ false },
|
||||||
|
ImportStorage(),
|
||||||
|
ElementInfoStorage()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ class NewJavaToKotlinConverter(
|
|||||||
progress: ProgressIndicator
|
progress: ProgressIndicator
|
||||||
): FilesResult {
|
): FilesResult {
|
||||||
val withProgressProcessor = WithProgressProcessor(progress, files)
|
val withProgressProcessor = WithProgressProcessor(progress, files)
|
||||||
val (results, externalCodeProcessing) = ApplicationManager.getApplication().runReadAction(Computable {
|
val (results, externalCodeProcessing, context) = ApplicationManager.getApplication().runReadAction(Computable {
|
||||||
elementsToKotlin(files, withProgressProcessor)
|
elementsToKotlin(files, withProgressProcessor)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ class NewJavaToKotlinConverter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
CommandProcessor.getInstance().runUndoTransparentAction {
|
CommandProcessor.getInstance().runUndoTransparentAction {
|
||||||
AfterConversionPass(project, postProcessor).run(kotlinFile, range = null)
|
AfterConversionPass(project, postProcessor).run(kotlinFile, context, range = null)
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlinFile.text
|
kotlinFile.text
|
||||||
@@ -97,7 +97,7 @@ class NewJavaToKotlinConverter(
|
|||||||
element to treeBuilder.buildTree(element)
|
element to treeBuilder.buildTree(element)
|
||||||
}
|
}
|
||||||
|
|
||||||
val context = ConversionContext(
|
val context = NewJ2kConverterContext(
|
||||||
symbolProvider,
|
symbolProvider,
|
||||||
this,
|
this,
|
||||||
{ it.containingFile in inputElements },
|
{ it.containingFile in inputElements },
|
||||||
@@ -119,6 +119,6 @@ class NewJavaToKotlinConverter(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return Result(results, null)
|
return Result(results, null, context)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,12 +6,12 @@
|
|||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.toExpression
|
import org.jetbrains.kotlin.nj2k.toExpression
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
|
|
||||||
class AnnotationClassConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class AnnotationClassConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKClass) return recurse(element)
|
if (element !is JKClass) return recurse(element)
|
||||||
if (element.classKind != JKClass.ClassKind.ANNOTATION) return recurse(element)
|
if (element.classKind != JKClass.ClassKind.ANNOTATION) return recurse(element)
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.isVarargsArgument
|
import org.jetbrains.kotlin.nj2k.isVarargsArgument
|
||||||
import org.jetbrains.kotlin.nj2k.toExpression
|
import org.jetbrains.kotlin.nj2k.toExpression
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.nj2k.tree.impl.JKAnnotationParameterImpl
|
|||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtAnnotationArrayInitializerExpressionImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtAnnotationArrayInitializerExpressionImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKNameIdentifierImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKNameIdentifierImpl
|
||||||
|
|
||||||
class AnnotationConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class AnnotationConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKAnnotation) return recurse(element)
|
if (element !is JKAnnotation) return recurse(element)
|
||||||
fixVarargsInvocation(element)
|
fixVarargsInvocation(element)
|
||||||
|
|||||||
@@ -8,14 +8,14 @@ package org.jetbrains.kotlin.nj2k.conversions
|
|||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.builtins.PrimitiveType
|
import org.jetbrains.kotlin.builtins.PrimitiveType
|
||||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.toArgumentList
|
import org.jetbrains.kotlin.nj2k.toArgumentList
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
import org.jetbrains.kotlin.resolve.CollectionLiteralResolver
|
import org.jetbrains.kotlin.resolve.CollectionLiteralResolver
|
||||||
|
|
||||||
|
|
||||||
class ArrayInitializerConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class ArrayInitializerConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
var newElement = element
|
var newElement = element
|
||||||
if (element is JKJavaNewArray) {
|
if (element is JKJavaNewArray) {
|
||||||
|
|||||||
@@ -10,15 +10,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKExpressionStatementImpl
|
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKFieldAccessExpressionImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKFieldAccessExpressionImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKFieldSymbol
|
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtThrowExpressionImpl
|
|
||||||
|
|
||||||
|
|
||||||
class ArrayOperationsConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class ArrayOperationsConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKQualifiedExpression) return recurse(element)
|
if (element !is JKQualifiedExpression) return recurse(element)
|
||||||
val selector = element.selector as? JKFieldAccessExpression ?: return recurse(element)
|
val selector = element.selector as? JKFieldAccessExpression ?: return recurse(element)
|
||||||
|
|||||||
@@ -8,12 +8,10 @@ package org.jetbrains.kotlin.nj2k.conversions
|
|||||||
import org.jetbrains.kotlin.nj2k.*
|
import org.jetbrains.kotlin.nj2k.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKExpressionStatementImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKExpressionStatementImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKJavaOperatorImpl
|
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKLambdaExpressionImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKLambdaExpressionImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.toKtToken
|
|
||||||
|
|
||||||
|
|
||||||
class AssertStatementConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class AssertStatementConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKJavaAssertStatement) return recurse(element)
|
if (element !is JKJavaAssertStatement) return recurse(element)
|
||||||
val messageExpression =
|
val messageExpression =
|
||||||
|
|||||||
+2
-2
@@ -5,12 +5,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.cast
|
import org.jetbrains.kotlin.utils.addToStdlib.cast
|
||||||
|
|
||||||
class AssignmentAsExpressionToAlsoConversion(val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class AssignmentAsExpressionToAlsoConversion(val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKJavaAssignmentExpression) return recurse(element)
|
if (element !is JKJavaAssignmentExpression) return recurse(element)
|
||||||
element.invalidate()
|
element.invalidate()
|
||||||
|
|||||||
+2
-2
@@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
|
|
||||||
class AssignmentStatementValCreationConversion(val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class AssignmentStatementValCreationConversion(val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKKtAlsoCallExpression) return recurse(element)
|
if (element !is JKKtAlsoCallExpression) return recurse(element)
|
||||||
val codeBlock = (element.statement as? JKBlockStatement)?.block ?: return recurse(element)
|
val codeBlock = (element.statement as? JKBlockStatement)?.block ?: return recurse(element)
|
||||||
|
|||||||
@@ -16,17 +16,17 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
||||||
|
|
||||||
interface BatchBaseConversion {
|
interface BatchBaseConversion {
|
||||||
fun runConversion(treeRoots: List<JKTreeElement>, context: ConversionContext): Boolean
|
fun runConversion(treeRoots: List<JKTreeElement>, context: NewJ2kConverterContext): Boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
interface SequentialBaseConversion : BatchBaseConversion {
|
interface SequentialBaseConversion : BatchBaseConversion {
|
||||||
fun runConversion(treeRoot: JKTreeElement, context: ConversionContext): Boolean
|
fun runConversion(treeRoot: JKTreeElement, context: NewJ2kConverterContext): Boolean
|
||||||
|
|
||||||
override fun runConversion(treeRoots: List<JKTreeElement>, context: ConversionContext): Boolean {
|
override fun runConversion(treeRoots: List<JKTreeElement>, context: NewJ2kConverterContext): Boolean {
|
||||||
return treeRoots.asSequence().map { runConversion(it, context) }.max() ?: false
|
return treeRoots.asSequence().map { runConversion(it, context) }.max() ?: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
|
|
||||||
class BlockToRunConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class BlockToRunConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKBlockStatement) return recurse(element)
|
if (element !is JKBlockStatement) return recurse(element)
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKArgumentListImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKArgumentListImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtCallExpressionImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtCallExpressionImpl
|
||||||
|
|
||||||
class BoxedTypeOperationsConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class BoxedTypeOperationsConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
return recurse(
|
return recurse(
|
||||||
when (element) {
|
when (element) {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.nj2k.tree.impl.*
|
|||||||
import org.jetbrains.kotlin.utils.addToStdlib.cast
|
import org.jetbrains.kotlin.utils.addToStdlib.cast
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
|
|
||||||
class BuiltinMembersConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class BuiltinMembersConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKExpression) return recurse(element)
|
if (element !is JKExpression) return recurse(element)
|
||||||
return recurse(element.convert() ?: element)
|
return recurse(element.convert() ?: element)
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.getCompanion
|
import org.jetbrains.kotlin.nj2k.getCompanion
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKAnnotationListImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKAnnotationListImpl
|
||||||
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.nj2k.tree.impl.JKClassImpl
|
|||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKModalityModifierElementImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKModalityModifierElementImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
||||||
|
|
||||||
class ClassToObjectPromotionConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class ClassToObjectPromotionConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element is JKClass && element.classKind == JKClass.ClassKind.CLASS) {
|
if (element is JKClass && element.classKind == JKClass.ClassKind.CLASS) {
|
||||||
val companion = element.getCompanion() ?: return recurse(element)
|
val companion = element.getCompanion() ?: return recurse(element)
|
||||||
|
|||||||
@@ -11,14 +11,14 @@
|
|||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKSymbol
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKSymbol
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.fqNameToImport
|
import org.jetbrains.kotlin.nj2k.tree.impl.fqNameToImport
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
|
|
||||||
|
|
||||||
class CollectImportsConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class CollectImportsConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
when (element) {
|
when (element) {
|
||||||
is JKClassAccessExpression -> addSymbol(element.identifier)
|
is JKClassAccessExpression -> addSymbol(element.identifier)
|
||||||
|
|||||||
@@ -5,31 +5,31 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
||||||
|
|
||||||
class BatchPipelineConversion(val conversions: List<BatchBaseConversion>) : BatchBaseConversion {
|
class BatchPipelineConversion(val conversions: List<BatchBaseConversion>) : BatchBaseConversion {
|
||||||
override fun runConversion(treeRoots: List<JKTreeElement>, context: ConversionContext): Boolean {
|
override fun runConversion(treeRoots: List<JKTreeElement>, context: NewJ2kConverterContext): Boolean {
|
||||||
return conversions.asSequence().map { it.runConversion(treeRoots, context) }.max() ?: false
|
return conversions.asSequence().map { it.runConversion(treeRoots, context) }.max() ?: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SequentialPipelineConversion(val conversions: List<SequentialBaseConversion>) : SequentialBaseConversion {
|
class SequentialPipelineConversion(val conversions: List<SequentialBaseConversion>) : SequentialBaseConversion {
|
||||||
override fun runConversion(treeRoot: JKTreeElement, context: ConversionContext): Boolean {
|
override fun runConversion(treeRoot: JKTreeElement, context: NewJ2kConverterContext): Boolean {
|
||||||
return conversions.asSequence().map { it.runConversion(treeRoot, context) }.max() ?: false
|
return conversions.asSequence().map { it.runConversion(treeRoot, context) }.max() ?: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class BatchRepeatConversion(val conversion: BatchBaseConversion) : BatchBaseConversion {
|
class BatchRepeatConversion(val conversion: BatchBaseConversion) : BatchBaseConversion {
|
||||||
|
|
||||||
override fun runConversion(treeRoots: List<JKTreeElement>, context: ConversionContext): Boolean {
|
override fun runConversion(treeRoots: List<JKTreeElement>, context: NewJ2kConverterContext): Boolean {
|
||||||
return true in generateSequence { conversion.runConversion(treeRoots, context) }.takeWhile { it }
|
return true in generateSequence { conversion.runConversion(treeRoots, context) }.takeWhile { it }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class SequentialRepeatConversion(val conversion: SequentialBaseConversion) : SequentialBaseConversion {
|
class SequentialRepeatConversion(val conversion: SequentialBaseConversion) : SequentialBaseConversion {
|
||||||
override fun runConversion(treeRoot: JKTreeElement, context: ConversionContext): Boolean {
|
override fun runConversion(treeRoot: JKTreeElement, context: NewJ2kConverterContext): Boolean {
|
||||||
return true in generateSequence { conversion.runConversion(treeRoot, context) }.takeWhile { it }
|
return true in generateSequence { conversion.runConversion(treeRoot, context) }.takeWhile { it }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtConstructorImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtConstructorImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKStubExpressionImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKStubExpressionImpl
|
||||||
|
|
||||||
class ConstructorConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class ConstructorConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKJavaMethod) return recurse(element)
|
if (element !is JKJavaMethod) return recurse(element)
|
||||||
val outerClass = element.parentOfType<JKClass>() ?: return recurse(element)
|
val outerClass = element.parentOfType<JKClass>() ?: return recurse(element)
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.copyTreeAndDetach
|
import org.jetbrains.kotlin.nj2k.copyTreeAndDetach
|
||||||
import org.jetbrains.kotlin.nj2k.jvmAnnotation
|
import org.jetbrains.kotlin.nj2k.jvmAnnotation
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.nj2k.tree.impl.JKUniverseMethodSymbol
|
|||||||
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
|
|
||||||
class DefaultArgumentsConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class DefaultArgumentsConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
|
|
||||||
private fun JKMethod.canNotBeMerged(): Boolean =
|
private fun JKMethod.canNotBeMerged(): Boolean =
|
||||||
modality == Modality.ABSTRACT
|
modality == Modality.ABSTRACT
|
||||||
|
|||||||
@@ -6,13 +6,13 @@
|
|||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import com.intellij.psi.PsiEnumConstant
|
import com.intellij.psi.PsiEnumConstant
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.containingClass
|
import org.jetbrains.kotlin.psi.psiUtil.containingClass
|
||||||
|
|
||||||
|
|
||||||
class EnumFieldAccessConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class EnumFieldAccessConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKFieldAccessExpression) return recurse(element)
|
if (element !is JKFieldAccessExpression) return recurse(element)
|
||||||
if ((element.parent as? JKQualifiedExpression)?.selector == element) return recurse(element)
|
if ((element.parent as? JKQualifiedExpression)?.selector == element) return recurse(element)
|
||||||
|
|||||||
@@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.equalsExpression
|
import org.jetbrains.kotlin.nj2k.equalsExpression
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKParenthesizedExpressionImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKParenthesizedExpressionImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.deepestFqName
|
import org.jetbrains.kotlin.nj2k.tree.impl.deepestFqName
|
||||||
|
|
||||||
class EqualsOperatorConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class EqualsOperatorConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKQualifiedExpression) return recurse(element)
|
if (element !is JKQualifiedExpression) return recurse(element)
|
||||||
if (element.receiver is JKSuperExpression) return recurse(element)
|
if (element.receiver is JKSuperExpression) return recurse(element)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.nj2k.tree.impl.*
|
|||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
|
|
||||||
|
|
||||||
class ForConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class ForConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
private val referenceSearcher: ReferenceSearcher
|
private val referenceSearcher: ReferenceSearcher
|
||||||
get() = context.converter.converterServices.oldServices.referenceSearcher
|
get() = context.converter.converterServices.oldServices.referenceSearcher
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.nj2k.tree.impl.*
|
|||||||
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
|
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
|
|
||||||
class ImplicitCastsConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class ImplicitCastsConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
when (element) {
|
when (element) {
|
||||||
is JKVariable -> convertVariable(element)
|
is JKVariable -> convertVariable(element)
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.findUsages
|
import org.jetbrains.kotlin.nj2k.findUsages
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
|
|
||||||
class ImplicitInitializerConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class ImplicitInitializerConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
|
|
||||||
enum class InitializationState {
|
enum class InitializationState {
|
||||||
INITIALIZED_IN_ALL_CONSTRUCTORS,
|
INITIALIZED_IN_ALL_CONSTRUCTORS,
|
||||||
|
|||||||
+2
-2
@@ -5,12 +5,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
|
|
||||||
|
|
||||||
class InsertDefaultPrimaryConstructorConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class InsertDefaultPrimaryConstructorConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKClass) return recurse(element)
|
if (element !is JKClass) return recurse(element)
|
||||||
if (element.classKind != JKClass.ClassKind.CLASS) return recurse(element)
|
if (element.classKind != JKClass.ClassKind.CLASS) return recurse(element)
|
||||||
|
|||||||
@@ -6,12 +6,12 @@
|
|||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import com.intellij.psi.PsiMember
|
import com.intellij.psi.PsiMember
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
||||||
import org.jetbrains.kotlin.nj2k.visibility
|
import org.jetbrains.kotlin.nj2k.visibility
|
||||||
|
|
||||||
class InternalDeclarationConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class InternalDeclarationConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKVisibilityOwner || element !is JKModalityOwner) return recurse(element)
|
if (element !is JKVisibilityOwner || element !is JKModalityOwner) return recurse(element)
|
||||||
val containingClass = element.parentOfType<JKClass>()
|
val containingClass = element.parentOfType<JKClass>()
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.copyTreeAndDetach
|
import org.jetbrains.kotlin.nj2k.copyTreeAndDetach
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKAnnotationParameterImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKAnnotationParameterImpl
|
||||||
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.nj2k.tree.impl.JKFieldAccessExpressionImpl
|
|||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtLiteralExpressionImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtLiteralExpressionImpl
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
|
|
||||||
class JavaAnnotationsConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class JavaAnnotationsConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element is JKAnnotationList) {
|
if (element is JKAnnotationList) {
|
||||||
for (annotation in element.annotations) {
|
for (annotation in element.annotations) {
|
||||||
|
|||||||
+2
-2
@@ -17,13 +17,13 @@
|
|||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.throwAnnotation
|
import org.jetbrains.kotlin.nj2k.throwAnnotation
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtFunctionImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtFunctionImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
||||||
|
|
||||||
class JavaMethodToKotlinFunctionConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class JavaMethodToKotlinFunctionConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKJavaMethod) return recurse(element)
|
if (element !is JKJavaMethod) return recurse(element)
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.annotationByFqName
|
import org.jetbrains.kotlin.nj2k.annotationByFqName
|
||||||
import org.jetbrains.kotlin.nj2k.jvmAnnotation
|
import org.jetbrains.kotlin.nj2k.jvmAnnotation
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
|
|
||||||
class JavaModifiersConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class JavaModifiersConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element is JKModalityOwner && element is JKAnnotationListOwner) {
|
if (element is JKModalityOwner && element is JKAnnotationListOwner) {
|
||||||
val overrideAnnotation = element.annotationList.annotationByFqName("java.lang.Override")
|
val overrideAnnotation = element.annotationList.annotationByFqName("java.lang.Override")
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
|
|
||||||
class JavaStandartMethodsConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class JavaStandartMethodsConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKClass) return recurse(element)
|
if (element !is JKClass) return recurse(element)
|
||||||
for (declaration in element.classBody.declarations) {
|
for (declaration in element.classBody.declarations) {
|
||||||
|
|||||||
+2
-2
@@ -8,12 +8,12 @@ package org.jetbrains.kotlin.nj2k.conversions
|
|||||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||||
import org.jetbrains.kotlin.load.java.NOT_NULL_ANNOTATIONS
|
import org.jetbrains.kotlin.load.java.NOT_NULL_ANNOTATIONS
|
||||||
import org.jetbrains.kotlin.load.java.NULLABLE_ANNOTATIONS
|
import org.jetbrains.kotlin.load.java.NULLABLE_ANNOTATIONS
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKTypeElementImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKTypeElementImpl
|
||||||
|
|
||||||
|
|
||||||
class JetbrainsNullableAnnotationsConverter(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class JetbrainsNullableAnnotationsConverter(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKAnnotationListOwner) return recurse(element)
|
if (element !is JKAnnotationListOwner) return recurse(element)
|
||||||
|
|
||||||
|
|||||||
@@ -5,15 +5,14 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
import org.jetbrains.kotlin.util.collectionUtils.concatInOrder
|
|
||||||
|
|
||||||
|
|
||||||
//TODO temporary
|
//TODO temporary
|
||||||
class MainFunctionConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class MainFunctionConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKMethod) return recurse(element)
|
if (element !is JKMethod) return recurse(element)
|
||||||
if (element.isMainFunctionDeclaration()) {
|
if (element.isMainFunctionDeclaration()) {
|
||||||
|
|||||||
@@ -7,11 +7,11 @@ package org.jetbrains.kotlin.nj2k.conversions
|
|||||||
|
|
||||||
import com.intellij.psi.PsiClass
|
import com.intellij.psi.PsiClass
|
||||||
import com.intellij.psi.PsiMethod
|
import com.intellij.psi.PsiMethod
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
||||||
|
|
||||||
class ModalityConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class ModalityConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
when (element) {
|
when (element) {
|
||||||
is JKClass -> processClass(element)
|
is JKClass -> processClass(element)
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.nj2k.conversions
|
|||||||
|
|
||||||
import com.intellij.psi.JavaTokenType
|
import com.intellij.psi.JavaTokenType
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.kotlinBinaryExpression
|
import org.jetbrains.kotlin.nj2k.kotlinBinaryExpression
|
||||||
import org.jetbrains.kotlin.nj2k.kotlinPostfixExpression
|
import org.jetbrains.kotlin.nj2k.kotlinPostfixExpression
|
||||||
import org.jetbrains.kotlin.nj2k.kotlinPrefixExpression
|
import org.jetbrains.kotlin.nj2k.kotlinPrefixExpression
|
||||||
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.nj2k.tree.*
|
|||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
|
|
||||||
|
|
||||||
class OperatorExpressionConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class OperatorExpressionConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKOperatorExpression) return recurse(element)
|
if (element !is JKOperatorExpression) return recurse(element)
|
||||||
val operator = element.operator as? JKJavaOperatorImpl ?: return recurse(element)
|
val operator = element.operator as? JKJavaOperatorImpl ?: return recurse(element)
|
||||||
|
|||||||
+2
-2
@@ -6,13 +6,13 @@
|
|||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.hasWritableUsages
|
import org.jetbrains.kotlin.nj2k.hasWritableUsages
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
|
|
||||||
|
|
||||||
class ParameterModificationInMethodCallsConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class ParameterModificationInMethodCallsConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKMethod) return recurse(element)
|
if (element !is JKMethod) return recurse(element)
|
||||||
val newVariables =
|
val newVariables =
|
||||||
|
|||||||
+2
-2
@@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.replace
|
import org.jetbrains.kotlin.nj2k.replace
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtInitDeclarationImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtInitDeclarationImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtPrimaryConstructorImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtPrimaryConstructorImpl
|
||||||
|
|
||||||
class PrimaryConstructorDetectConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class PrimaryConstructorDetectConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element is JKClass &&
|
if (element is JKClass &&
|
||||||
(element.classKind == JKClass.ClassKind.CLASS || element.classKind == JKClass.ClassKind.ENUM)
|
(element.classKind == JKClass.ClassKind.CLASS || element.classKind == JKClass.ClassKind.ENUM)
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
||||||
|
|
||||||
abstract class RecursiveApplicableConversionBase : MatchBasedConversion() {
|
abstract class RecursiveApplicableConversionBase : MatchBasedConversion() {
|
||||||
@@ -13,7 +13,7 @@ abstract class RecursiveApplicableConversionBase : MatchBasedConversion() {
|
|||||||
somethingChanged = true
|
somethingChanged = true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun runConversion(treeRoot: JKTreeElement, context: ConversionContext): Boolean {
|
override fun runConversion(treeRoot: JKTreeElement, context: NewJ2kConverterContext): Boolean {
|
||||||
val root = applyToElement(treeRoot)
|
val root = applyToElement(treeRoot)
|
||||||
assert(root === treeRoot)
|
assert(root === treeRoot)
|
||||||
return somethingChanged
|
return somethingChanged
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import com.intellij.psi.PsiElement
|
|||||||
import com.intellij.psi.PsiModifierListOwner
|
import com.intellij.psi.PsiModifierListOwner
|
||||||
import com.intellij.psi.util.parentOfType
|
import com.intellij.psi.util.parentOfType
|
||||||
import org.jetbrains.kotlin.j2k.getContainingClass
|
import org.jetbrains.kotlin.j2k.getContainingClass
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.asQualifierWithThisAsSelector
|
import org.jetbrains.kotlin.nj2k.asQualifierWithThisAsSelector
|
||||||
import org.jetbrains.kotlin.nj2k.copyTreeAndDetach
|
import org.jetbrains.kotlin.nj2k.copyTreeAndDetach
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.psi.psiUtil.containingClass
|
|||||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
|
|
||||||
|
|
||||||
class StaticMemberAccessConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class StaticMemberAccessConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
val symbol =
|
val symbol =
|
||||||
when (element) {
|
when (element) {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import com.intellij.psi.PsiElement
|
|||||||
import com.intellij.psi.controlFlow.ControlFlowFactory
|
import com.intellij.psi.controlFlow.ControlFlowFactory
|
||||||
import com.intellij.psi.controlFlow.ControlFlowUtil
|
import com.intellij.psi.controlFlow.ControlFlowUtil
|
||||||
import com.intellij.psi.controlFlow.LocalsOrMyInstanceFieldsControlFlowPolicy
|
import com.intellij.psi.controlFlow.LocalsOrMyInstanceFieldsControlFlowPolicy
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.blockStatement
|
import org.jetbrains.kotlin.nj2k.blockStatement
|
||||||
import org.jetbrains.kotlin.nj2k.copyTreeAndDetach
|
import org.jetbrains.kotlin.nj2k.copyTreeAndDetach
|
||||||
import org.jetbrains.kotlin.nj2k.runExpression
|
import org.jetbrains.kotlin.nj2k.runExpression
|
||||||
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.nj2k.tree.*
|
|||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
|
|
||||||
|
|
||||||
class SwitchStatementConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class SwitchStatementConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKJavaSwitchStatementImpl) return recurse(element)
|
if (element !is JKJavaSwitchStatementImpl) return recurse(element)
|
||||||
element.invalidate()
|
element.invalidate()
|
||||||
|
|||||||
@@ -5,14 +5,14 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.JKJavaSynchronizedStatement
|
import org.jetbrains.kotlin.nj2k.tree.JKJavaSynchronizedStatement
|
||||||
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.withNonCodeElementsFrom
|
import org.jetbrains.kotlin.nj2k.tree.withNonCodeElementsFrom
|
||||||
|
|
||||||
|
|
||||||
class SynchronizedStatementConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class SynchronizedStatementConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKJavaSynchronizedStatement) return recurse(element)
|
if (element !is JKJavaSynchronizedStatement) return recurse(element)
|
||||||
element.invalidate()
|
element.invalidate()
|
||||||
|
|||||||
@@ -16,14 +16,14 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
||||||
import org.jetbrains.kotlin.nj2k.tree.visitors.JKVisitorVoid
|
import org.jetbrains.kotlin.nj2k.tree.visitors.JKVisitorVoid
|
||||||
|
|
||||||
abstract class TransformerBasedConversion : SequentialBaseConversion, JKVisitorVoid {
|
abstract class TransformerBasedConversion : SequentialBaseConversion, JKVisitorVoid {
|
||||||
protected var somethingChanged = false
|
protected var somethingChanged = false
|
||||||
|
|
||||||
override fun runConversion(treeRoot: JKTreeElement, context: ConversionContext): Boolean {
|
override fun runConversion(treeRoot: JKTreeElement, context: NewJ2kConverterContext): Boolean {
|
||||||
somethingChanged = false
|
somethingChanged = false
|
||||||
treeRoot.accept(this, null)
|
treeRoot.accept(this, null)
|
||||||
return somethingChanged
|
return somethingChanged
|
||||||
|
|||||||
@@ -6,14 +6,14 @@
|
|||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.copyTreeAndDetach
|
import org.jetbrains.kotlin.nj2k.copyTreeAndDetach
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
import org.jetbrains.kotlin.nj2k.useExpression
|
import org.jetbrains.kotlin.nj2k.useExpression
|
||||||
|
|
||||||
|
|
||||||
class TryStatementConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class TryStatementConversion(private val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element !is JKJavaTryStatement) return recurse(element)
|
if (element !is JKJavaTryStatement) return recurse(element)
|
||||||
return if (element.resourceDeclarations.isEmpty())
|
return if (element.resourceDeclarations.isEmpty())
|
||||||
|
|||||||
@@ -15,12 +15,12 @@ import org.jetbrains.kotlin.j2k.ast.Mutability
|
|||||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.kotlinTypeByName
|
import org.jetbrains.kotlin.nj2k.kotlinTypeByName
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
|
|
||||||
class TypeMappingConversion(val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class TypeMappingConversion(val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
|
||||||
private val typeFlavorCalculator = TypeFlavorCalculator(object : TypeFlavorConverterFacade {
|
private val typeFlavorCalculator = TypeFlavorCalculator(object : TypeFlavorConverterFacade {
|
||||||
override val referenceSearcher: ReferenceSearcher
|
override val referenceSearcher: ReferenceSearcher
|
||||||
get() = context.converter.converterServices.oldServices.referenceSearcher
|
get() = context.converter.converterServices.oldServices.referenceSearcher
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.nj2k.conversions
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiPolyVariantReference
|
import com.intellij.psi.PsiPolyVariantReference
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.psi.psiUtil.getChildOfType
|
|||||||
import org.jetbrains.kotlin.resolve.ImportPath
|
import org.jetbrains.kotlin.resolve.ImportPath
|
||||||
|
|
||||||
|
|
||||||
internal fun resolveFqName(classId: ClassId, contextElement: JKTreeElement, context: ConversionContext): PsiElement? {
|
internal fun resolveFqName(classId: ClassId, contextElement: JKTreeElement, context: NewJ2kConverterContext): PsiElement? {
|
||||||
val element = contextElement.psi ?: return null
|
val element = contextElement.psi ?: return null
|
||||||
return resolveFqName(classId, element)
|
return resolveFqName(classId, element)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ fun kotlinPostfixExpression(
|
|||||||
fun untilToExpression(
|
fun untilToExpression(
|
||||||
from: JKExpression,
|
from: JKExpression,
|
||||||
to: JKExpression,
|
to: JKExpression,
|
||||||
conversionContext: ConversionContext
|
conversionContext: NewJ2kConverterContext
|
||||||
): JKExpression =
|
): JKExpression =
|
||||||
rangeExpression(
|
rangeExpression(
|
||||||
from,
|
from,
|
||||||
@@ -232,7 +232,7 @@ fun untilToExpression(
|
|||||||
fun downToExpression(
|
fun downToExpression(
|
||||||
from: JKExpression,
|
from: JKExpression,
|
||||||
to: JKExpression,
|
to: JKExpression,
|
||||||
conversionContext: ConversionContext
|
conversionContext: NewJ2kConverterContext
|
||||||
): JKExpression =
|
): JKExpression =
|
||||||
rangeExpression(
|
rangeExpression(
|
||||||
from,
|
from,
|
||||||
@@ -254,7 +254,7 @@ fun rangeExpression(
|
|||||||
from: JKExpression,
|
from: JKExpression,
|
||||||
to: JKExpression,
|
to: JKExpression,
|
||||||
operatorName: String,
|
operatorName: String,
|
||||||
conversionContext: ConversionContext
|
conversionContext: NewJ2kConverterContext
|
||||||
): JKExpression =
|
): JKExpression =
|
||||||
JKBinaryExpressionImpl(
|
JKBinaryExpressionImpl(
|
||||||
from,
|
from,
|
||||||
@@ -331,7 +331,7 @@ fun stringLiteral(content: String, symbolProvider: JKSymbolProvider): JKExpressi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun JKVariable.findUsages(scope: JKTreeElement, context: ConversionContext): List<JKFieldAccessExpression> {
|
fun JKVariable.findUsages(scope: JKTreeElement, context: NewJ2kConverterContext): List<JKFieldAccessExpression> {
|
||||||
val symbol = context.symbolProvider.provideUniverseSymbol(this)
|
val symbol = context.symbolProvider.provideUniverseSymbol(this)
|
||||||
val usages = mutableListOf<JKFieldAccessExpression>()
|
val usages = mutableListOf<JKFieldAccessExpression>()
|
||||||
val searcher = object : RecursiveApplicableConversionBase() {
|
val searcher = object : RecursiveApplicableConversionBase() {
|
||||||
@@ -369,7 +369,7 @@ fun JKExpression.bangedBangedExpr(symbolProvider: JKSymbolProvider): JKExpressio
|
|||||||
JKKtOperatorImpl(KtTokens.EXCLEXCL, type(symbolProvider)!!)
|
JKKtOperatorImpl(KtTokens.EXCLEXCL, type(symbolProvider)!!)
|
||||||
)
|
)
|
||||||
|
|
||||||
fun JKVariable.hasWritableUsages(scope: JKTreeElement, context: ConversionContext): Boolean =
|
fun JKVariable.hasWritableUsages(scope: JKTreeElement, context: NewJ2kConverterContext): Boolean =
|
||||||
findUsages(scope, context).any {
|
findUsages(scope, context).any {
|
||||||
it.asAssignmentFromTarget() != null
|
it.asAssignmentFromTarget() != null
|
||||||
|| it.isInDecrementOrIncrement()
|
|| it.isInDecrementOrIncrement()
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaClassDescriptor
|
|||||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||||
import org.jetbrains.kotlin.js.descriptorUtils.getJetTypeFqName
|
import org.jetbrains.kotlin.js.descriptorUtils.getJetTypeFqName
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.JKSymbolProvider
|
import org.jetbrains.kotlin.nj2k.JKSymbolProvider
|
||||||
import org.jetbrains.kotlin.nj2k.kotlinTypeByName
|
import org.jetbrains.kotlin.nj2k.kotlinTypeByName
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
@@ -240,7 +240,7 @@ fun <T : JKType> T.updateNullabilityRecursively(newNullability: Nullability): T
|
|||||||
}
|
}
|
||||||
} as T
|
} as T
|
||||||
|
|
||||||
fun JKJavaMethod.returnTypeNullability(context: ConversionContext): Nullability =
|
fun JKJavaMethod.returnTypeNullability(context: NewJ2kConverterContext): Nullability =
|
||||||
context.typeFlavorCalculator.methodNullability(psi()!!)
|
context.typeFlavorCalculator.methodNullability(psi()!!)
|
||||||
|
|
||||||
fun JKType.isCollectionType(symbolProvider: JKSymbolProvider): Boolean {
|
fun JKType.isCollectionType(symbolProvider: JKSymbolProvider): Boolean {
|
||||||
|
|||||||
Reference in New Issue
Block a user