J2K: do not convert doc comments on WebDemo
#KT-7968 Fixed
This commit is contained in:
@@ -36,9 +36,7 @@ import org.jetbrains.kotlin.idea.j2k.IdeaResolverForConverter
|
|||||||
import org.jetbrains.kotlin.idea.j2k.J2kPostProcessor
|
import org.jetbrains.kotlin.idea.j2k.J2kPostProcessor
|
||||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
import org.jetbrains.kotlin.j2k.ConverterSettings
|
import org.jetbrains.kotlin.j2k.*
|
||||||
import org.jetbrains.kotlin.j2k.IdeaReferenceSearcher
|
|
||||||
import org.jetbrains.kotlin.j2k.JavaToKotlinConverter
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
@@ -52,7 +50,7 @@ public class JavaToKotlinAction : AnAction() {
|
|||||||
|
|
||||||
var converterResult: JavaToKotlinConverter.FilesResult? = null
|
var converterResult: JavaToKotlinConverter.FilesResult? = null
|
||||||
fun convert() {
|
fun convert() {
|
||||||
val converter = JavaToKotlinConverter(project, ConverterSettings.defaultSettings, IdeaReferenceSearcher, IdeaResolverForConverter)
|
val converter = JavaToKotlinConverter(project, ConverterSettings.defaultSettings, IdeaReferenceSearcher, IdeaResolverForConverter, IdeaDocCommentConverter)
|
||||||
converterResult = converter.filesToKotlin(javaFiles, J2kPostProcessor(formatCode = true), ProgressManager.getInstance().getProgressIndicator())
|
converterResult = converter.filesToKotlin(javaFiles, J2kPostProcessor(formatCode = true), ProgressManager.getInstance().getProgressIndicator())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -160,7 +160,8 @@ public class ConvertJavaCopyPastePostProcessor : CopyPastePostProcessor<TextBloc
|
|||||||
project,
|
project,
|
||||||
ConverterSettings.defaultSettings,
|
ConverterSettings.defaultSettings,
|
||||||
IdeaReferenceSearcher,
|
IdeaReferenceSearcher,
|
||||||
IdeaResolverForConverter
|
IdeaResolverForConverter,
|
||||||
|
IdeaDocCommentConverter
|
||||||
)
|
)
|
||||||
|
|
||||||
val inputElements = elementsAndTexts.filterIsInstance<PsiElement>()
|
val inputElements = elementsAndTexts.filterIsInstance<PsiElement>()
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ import org.jetbrains.kotlin.idea.j2k.IdeaResolverForConverter
|
|||||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||||
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.IdeaDocCommentConverter
|
||||||
import org.jetbrains.kotlin.j2k.IdeaReferenceSearcher
|
import org.jetbrains.kotlin.j2k.IdeaReferenceSearcher
|
||||||
import org.jetbrains.kotlin.j2k.JavaToKotlinConverter
|
import org.jetbrains.kotlin.j2k.JavaToKotlinConverter
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
@@ -572,7 +573,8 @@ fun PsiExpression.j2k(): JetExpression? {
|
|||||||
val j2kConverter = JavaToKotlinConverter(project,
|
val j2kConverter = JavaToKotlinConverter(project,
|
||||||
ConverterSettings.defaultSettings,
|
ConverterSettings.defaultSettings,
|
||||||
IdeaReferenceSearcher,
|
IdeaReferenceSearcher,
|
||||||
IdeaResolverForConverter)
|
IdeaResolverForConverter,
|
||||||
|
IdeaDocCommentConverter)
|
||||||
val text = j2kConverter.elementsToKotlin(listOf(this)).results.single()?.text ?: return null //TODO: insert imports
|
val text = j2kConverter.elementsToKotlin(listOf(this)).results.single()?.text ?: return null //TODO: insert imports
|
||||||
return JetPsiFactory(getProject()).createExpression(text)
|
return JetPsiFactory(getProject()).createExpression(text)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ fun CodeBuilder.append(elements: Collection<Element>, separator: String, prefix:
|
|||||||
|
|
||||||
class ElementCreationStackTraceRequiredException : RuntimeException()
|
class ElementCreationStackTraceRequiredException : RuntimeException()
|
||||||
|
|
||||||
class CodeBuilder(private val topElement: PsiElement?) {
|
class CodeBuilder(private val topElement: PsiElement?, private var docConverter: DocCommentConverter) {
|
||||||
private val builder = StringBuilder()
|
private val builder = StringBuilder()
|
||||||
private var endOfLineCommentAtEnd = false
|
private var endOfLineCommentAtEnd = false
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ class CodeBuilder(private val topElement: PsiElement?) {
|
|||||||
|
|
||||||
private fun appendCommentOrWhiteSpace(element: PsiElement) {
|
private fun appendCommentOrWhiteSpace(element: PsiElement) {
|
||||||
if (element is PsiDocComment) {
|
if (element is PsiDocComment) {
|
||||||
append(DocCommentConverter.convertDocComment(element), false)
|
append(docConverter.convertDocComment(element), false)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
append(element.getText()!!, element.isEndOfLineComment())
|
append(element.getText()!!, element.isEndOfLineComment())
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ class Converter private constructor(
|
|||||||
val inConversionScope: (PsiElement) -> Boolean,
|
val inConversionScope: (PsiElement) -> Boolean,
|
||||||
val referenceSearcher: ReferenceSearcher,
|
val referenceSearcher: ReferenceSearcher,
|
||||||
val resolverForConverter: ResolverForConverter,
|
val resolverForConverter: ResolverForConverter,
|
||||||
|
private val docCommentConverter: DocCommentConverter,
|
||||||
private val commonState: Converter.CommonState,
|
private val commonState: Converter.CommonState,
|
||||||
private val personalState: Converter.PersonalState
|
private val personalState: Converter.PersonalState
|
||||||
) {
|
) {
|
||||||
@@ -63,17 +64,17 @@ class Converter private constructor(
|
|||||||
companion object {
|
companion object {
|
||||||
public fun create(elementToConvert: PsiElement, settings: ConverterSettings, inConversionScope: (PsiElement) -> Boolean,
|
public fun create(elementToConvert: PsiElement, settings: ConverterSettings, inConversionScope: (PsiElement) -> Boolean,
|
||||||
referenceSearcher: ReferenceSearcher, resolverForConverter: ResolverForConverter,
|
referenceSearcher: ReferenceSearcher, resolverForConverter: ResolverForConverter,
|
||||||
usageProcessingsCollector: (UsageProcessing) -> Unit): Converter {
|
docCommentConverter: DocCommentConverter, usageProcessingsCollector: (UsageProcessing) -> Unit): Converter {
|
||||||
return Converter(elementToConvert, settings, inConversionScope,
|
return Converter(elementToConvert, settings, inConversionScope,
|
||||||
CachingReferenceSearcher(referenceSearcher),
|
CachingReferenceSearcher(referenceSearcher),
|
||||||
resolverForConverter, CommonState(usageProcessingsCollector), PersonalState(null))
|
resolverForConverter, docCommentConverter, CommonState(usageProcessingsCollector), PersonalState(null))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun withSpecialContext(context: PsiElement): Converter = withState(PersonalState(context))
|
public fun withSpecialContext(context: PsiElement): Converter = withState(PersonalState(context))
|
||||||
|
|
||||||
private fun withState(state: PersonalState): Converter
|
private fun withState(state: PersonalState): Converter
|
||||||
= Converter(elementToConvert, settings, inConversionScope, referenceSearcher, resolverForConverter, commonState, state)
|
= Converter(elementToConvert, settings, inConversionScope, referenceSearcher, resolverForConverter, docCommentConverter, commonState, state)
|
||||||
|
|
||||||
private fun createDefaultCodeConverter() = CodeConverter(this, DefaultExpressionConverter(), DefaultStatementConverter(), null)
|
private fun createDefaultCodeConverter() = CodeConverter(this, DefaultExpressionConverter(), DefaultStatementConverter(), null)
|
||||||
|
|
||||||
@@ -97,7 +98,7 @@ class Converter private constructor(
|
|||||||
{ usageProcessings ->
|
{ usageProcessings ->
|
||||||
unfoldDeferredElements(usageProcessings)
|
unfoldDeferredElements(usageProcessings)
|
||||||
|
|
||||||
val builder = CodeBuilder(elementToConvert)
|
val builder = CodeBuilder(elementToConvert, docCommentConverter)
|
||||||
builder.append(element)
|
builder.append(element)
|
||||||
Result(builder.resultText, builder.importsToAdd)
|
Result(builder.resultText, builder.importsToAdd)
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -29,8 +29,16 @@ import com.intellij.psi.xml.XmlText
|
|||||||
import com.intellij.psi.xml.XmlTokenType
|
import com.intellij.psi.xml.XmlTokenType
|
||||||
import java.util.Stack
|
import java.util.Stack
|
||||||
|
|
||||||
object DocCommentConverter {
|
interface DocCommentConverter {
|
||||||
fun convertDocComment(docComment: PsiDocComment): String {
|
fun convertDocComment(docComment: PsiDocComment): String
|
||||||
|
}
|
||||||
|
|
||||||
|
object EmptyDocCommentConverter: DocCommentConverter {
|
||||||
|
override fun convertDocComment(docComment: PsiDocComment) = docComment.text
|
||||||
|
}
|
||||||
|
|
||||||
|
object IdeaDocCommentConverter : DocCommentConverter {
|
||||||
|
override fun convertDocComment(docComment: PsiDocComment): String {
|
||||||
val html = StringBuilder {
|
val html = StringBuilder {
|
||||||
appendJavadocElements(docComment.getDescriptionElements())
|
appendJavadocElements(docComment.getDescriptionElements())
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,8 @@ public class JavaToKotlinConverter(
|
|||||||
private val project: Project,
|
private val project: Project,
|
||||||
private val settings: ConverterSettings,
|
private val settings: ConverterSettings,
|
||||||
private val referenceSearcher: ReferenceSearcher,
|
private val referenceSearcher: ReferenceSearcher,
|
||||||
private val resolverForConverter: ResolverForConverter
|
private val resolverForConverter: ResolverForConverter,
|
||||||
|
private val docCommentConverter: DocCommentConverter
|
||||||
) {
|
) {
|
||||||
private val LOG = Logger.getInstance("#org.jetbrains.kotlin.j2k.JavaToKotlinConverter")
|
private val LOG = Logger.getInstance("#org.jetbrains.kotlin.j2k.JavaToKotlinConverter")
|
||||||
|
|
||||||
@@ -142,7 +143,7 @@ public class JavaToKotlinConverter(
|
|||||||
|
|
||||||
|
|
||||||
val intermediateResults = processor.processItems(0.25, inputElements) { inputElement ->
|
val intermediateResults = processor.processItems(0.25, inputElements) { inputElement ->
|
||||||
Converter.create(inputElement, settings, ::inConversionScope, referenceSearcher, resolverForConverter, usageProcessingCollector).convert()
|
Converter.create(inputElement, settings, ::inConversionScope, referenceSearcher, resolverForConverter, docCommentConverter, usageProcessingCollector).convert()
|
||||||
}.toArrayList()
|
}.toArrayList()
|
||||||
|
|
||||||
val results = processor.processItems(0.25, intermediateResults.withIndex()) { pair ->
|
val results = processor.processItems(0.25, intermediateResults.withIndex()) { pair ->
|
||||||
|
|||||||
@@ -16,34 +16,11 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.j2k
|
package org.jetbrains.kotlin.j2k
|
||||||
|
|
||||||
import com.intellij.core.JavaCoreApplicationEnvironment
|
|
||||||
import com.intellij.core.JavaCoreProjectEnvironment
|
|
||||||
import com.intellij.lang.java.JavaLanguage
|
import com.intellij.lang.java.JavaLanguage
|
||||||
import com.intellij.openapi.util.Disposer
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.psi.PsiFile
|
import com.intellij.psi.PsiFile
|
||||||
import com.intellij.psi.PsiFileFactory
|
import com.intellij.psi.PsiFileFactory
|
||||||
import com.intellij.psi.PsiJavaFile
|
import com.intellij.psi.PsiJavaFile
|
||||||
import org.jetbrains.kotlin.utils.PathUtil
|
|
||||||
import java.io.File
|
|
||||||
import java.net.URLClassLoader
|
|
||||||
import com.intellij.codeInsight.NullableNotNullManager
|
|
||||||
import com.intellij.psi.PsiModifierListOwner
|
|
||||||
import com.intellij.openapi.extensions.Extensions
|
|
||||||
import com.intellij.core.CoreApplicationEnvironment
|
|
||||||
import com.intellij.psi.augment.PsiAugmentProvider
|
|
||||||
import com.intellij.codeInsight.runner.JavaMainMethodProvider
|
|
||||||
import com.intellij.codeInsight.ContainerProvider
|
|
||||||
import com.intellij.openapi.fileTypes.FileTypeExtensionPoint
|
|
||||||
import com.intellij.psi.stubs.BinaryFileStubBuilders
|
|
||||||
import com.intellij.psi.FileContextProvider
|
|
||||||
import com.intellij.psi.meta.MetaDataContributor
|
|
||||||
import com.intellij.psi.impl.compiled.ClsCustomNavigationPolicy
|
|
||||||
import com.intellij.psi.compiled.ClassFileDecompilers
|
|
||||||
import com.intellij.psi.impl.PsiTreeChangePreprocessor
|
|
||||||
import com.intellij.psi.PsiElementFinder
|
|
||||||
import com.intellij.openapi.extensions.ExtensionsArea
|
|
||||||
import com.intellij.openapi.project.Project
|
|
||||||
import com.intellij.psi.PsiElement
|
|
||||||
|
|
||||||
public object JavaToKotlinTranslator {
|
public object JavaToKotlinTranslator {
|
||||||
private fun createFile(text: String, project: Project): PsiFile? {
|
private fun createFile(text: String, project: Project): PsiFile? {
|
||||||
@@ -68,7 +45,7 @@ public object JavaToKotlinTranslator {
|
|||||||
public fun generateKotlinCode(javaCode: String, project: Project): String {
|
public fun generateKotlinCode(javaCode: String, project: Project): String {
|
||||||
val file = createFile(javaCode, project)
|
val file = createFile(javaCode, project)
|
||||||
if (file is PsiJavaFile) {
|
if (file is PsiJavaFile) {
|
||||||
val converter = JavaToKotlinConverter(file.getProject(), ConverterSettings.defaultSettings, EmptyReferenceSearcher, EmptyResolverForConverter)
|
val converter = JavaToKotlinConverter(file.getProject(), ConverterSettings.defaultSettings, EmptyReferenceSearcher, EmptyResolverForConverter, EmptyDocCommentConverter)
|
||||||
return prettify(converter.elementsToKotlin(listOf(file)).results.single()!!.text) //TODO: imports
|
return prettify(converter.elementsToKotlin(listOf(file)).results.single()!!.text) //TODO: imports
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ data class CommentsAndSpacesInheritance(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun Element.canonicalCode(): String {
|
fun Element.canonicalCode(): String {
|
||||||
val builder = CodeBuilder(null)
|
val builder = CodeBuilder(null, EmptyDocCommentConverter)
|
||||||
builder.append(this)
|
builder.append(this)
|
||||||
return builder.resultText
|
return builder.resultText
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public abstract class AbstractJavaToKotlinConverterMultiFileTest : AbstractJavaT
|
|||||||
assert(psiFile is PsiJavaFile || psiFile is JetFile)
|
assert(psiFile is PsiJavaFile || psiFile is JetFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
val converter = JavaToKotlinConverter(project, ConverterSettings.defaultSettings, IdeaReferenceSearcher, IdeaResolverForConverter)
|
val converter = JavaToKotlinConverter(project, ConverterSettings.defaultSettings, IdeaReferenceSearcher, IdeaResolverForConverter, EmptyDocCommentConverter)
|
||||||
val (results, externalCodeProcessor) = converter.filesToKotlin(psiFilesToConvert, J2kPostProcessor(formatCode = true))
|
val (results, externalCodeProcessor) = converter.filesToKotlin(psiFilesToConvert, J2kPostProcessor(formatCode = true))
|
||||||
|
|
||||||
val process = externalCodeProcessor?.prepareWriteOperation(EmptyProgressIndicator())
|
val process = externalCodeProcessor?.prepareWriteOperation(EmptyProgressIndicator())
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ public abstract class AbstractJavaToKotlinConverterSingleFileTest : AbstractJava
|
|||||||
private fun fileToKotlin(text: String, settings: ConverterSettings, project: Project): String {
|
private fun fileToKotlin(text: String, settings: ConverterSettings, project: Project): String {
|
||||||
val file = createJavaFile(text)
|
val file = createJavaFile(text)
|
||||||
val converter = JavaToKotlinConverter(project, settings,
|
val converter = JavaToKotlinConverter(project, settings,
|
||||||
IdeaReferenceSearcher, IdeaResolverForConverter)
|
IdeaReferenceSearcher, IdeaResolverForConverter, IdeaDocCommentConverter)
|
||||||
return converter.filesToKotlin(listOf(file), J2kPostProcessor(formatCode = true)).results.single()
|
return converter.filesToKotlin(listOf(file), J2kPostProcessor(formatCode = true)).results.single()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user