J2K: don't automatically convert Java code when pasting to a string literal in Kotlin
#KT-7759 Fixed
This commit is contained in:
+9
-2
@@ -29,6 +29,7 @@ import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.PsiJavaFile
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference
|
||||
import org.jetbrains.kotlin.idea.codeInsight.KotlinCopyPasteReferenceProcessor
|
||||
@@ -43,8 +44,9 @@ import org.jetbrains.kotlin.j2k.ConverterSettings
|
||||
import org.jetbrains.kotlin.j2k.JavaToKotlinConverter
|
||||
import org.jetbrains.kotlin.j2k.ParseContext
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtPsiFactory
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.parents
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||
import java.awt.datatransfer.Transferable
|
||||
import java.util.*
|
||||
|
||||
@@ -80,6 +82,11 @@ public class ConvertJavaCopyPastePostProcessor : CopyPastePostProcessor<TextBloc
|
||||
val document = editor.getDocument()
|
||||
val targetFile = PsiDocumentManager.getInstance(project).getPsiFile(document) as? KtFile ?: return
|
||||
|
||||
val elementAt = targetFile.findElementAt(caretOffset)
|
||||
if (PsiTreeUtil.getParentOfType(elementAt, KtStringTemplateExpression::class.java, false, KtStringTemplateEntryWithExpression::class.java) is KtStringTemplateExpression) {
|
||||
return
|
||||
}
|
||||
|
||||
data class Result(val text: String?, val referenceData: Collection<KotlinReferenceData>, val explicitImports: Set<FqName>)
|
||||
|
||||
fun doConversion(): Result {
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fun main(args: Array<String>) {
|
||||
println("String s = 1;")
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
class A {
|
||||
public static void main(String[] args) {
|
||||
<selection>String s = 1;</selection>
|
||||
}
|
||||
}
|
||||
|
||||
// NO_CONVERSION_EXPECTED
|
||||
@@ -0,0 +1,3 @@
|
||||
fun main(args: Array<String>) {
|
||||
println("<caret>")
|
||||
}
|
||||
+6
@@ -173,6 +173,12 @@ public class JavaToKotlinCopyPasteConversionTestGenerated extends AbstractJavaTo
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("InsertIntoString.java")
|
||||
public void testInsertIntoString() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/copyPaste/conversion/InsertIntoString.java");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("MethodDeclarationWithNoBody.java")
|
||||
public void testMethodDeclarationWithNoBody() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/copyPaste/conversion/MethodDeclarationWithNoBody.java");
|
||||
|
||||
Reference in New Issue
Block a user