J2K: don't automatically convert Java code when pasting to a string literal in Kotlin

#KT-7759 Fixed
This commit is contained in:
Natalia Ukhorskaya
2015-12-15 15:13:05 +03:00
parent f3a6c541ec
commit a520e93b5b
5 changed files with 28 additions and 2 deletions
@@ -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>")
}
@@ -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");