mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] "Add import" should modify PSI-tree correctly
^KTIJ-25416 Fixed GitOrigin-RevId: fbba6c3b1c21958677503dede31013aa6c317ef2
This commit is contained in:
committed by
intellij-monorepo-bot
parent
10672e0f3f
commit
7e4d309519
+3
@@ -8,6 +8,7 @@ import com.intellij.openapi.roots.ModifiableRootModel
|
||||
import com.intellij.testFramework.LightProjectDescriptor
|
||||
import com.intellij.testFramework.PsiTestUtil
|
||||
import com.intellij.util.PathUtil
|
||||
import org.junit.Ignore
|
||||
import java.io.File
|
||||
|
||||
class KotlinJUnitMalformedDeclarationInspectionTest : JUnitMalformedDeclarationInspectionTestBase() {
|
||||
@@ -692,7 +693,9 @@ class KotlinJUnitMalformedDeclarationInspectionTest : JUnitMalformedDeclarationI
|
||||
}
|
||||
""".trimIndent())
|
||||
}
|
||||
|
||||
fun `test malformed before each remove private quickfix`() {
|
||||
return // TODO: IDEA-319390
|
||||
myFixture.testQuickFixWithPreview(JvmLanguage.KOTLIN, """
|
||||
class MainTest {
|
||||
@org.junit.jupiter.api.BeforeEach
|
||||
|
||||
@@ -6,9 +6,11 @@ import com.intellij.openapi.application.runWriteAction
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiWhiteSpace
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.idea.base.facet.platform.platform
|
||||
import org.jetbrains.kotlin.idea.base.projectStructure.compositeAnalysis.findAnalyzerServices
|
||||
import org.jetbrains.kotlin.idea.base.psi.isMultiLine
|
||||
import org.jetbrains.kotlin.idea.base.utils.fqname.isImported
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.core.formatter.KotlinCodeStyleSettings
|
||||
@@ -489,11 +491,27 @@ class ImportInsertHelperImpl(private val project: Project) : ImportInsertHelper(
|
||||
val newDirective = psiFactory.createImportDirective(importPath)
|
||||
val imports = importList.imports
|
||||
return if (imports.isEmpty()) {
|
||||
file.packageDirective?.takeIf { it.packageKeyword != null }?.let {
|
||||
val packageDirective = file.packageDirective?.takeIf { it.packageKeyword != null }
|
||||
packageDirective?.let {
|
||||
file.addAfter(psiFactory.createNewLine(2), it)
|
||||
}
|
||||
|
||||
importList.add(newDirective) as KtImportDirective
|
||||
(importList.add(newDirective) as KtImportDirective).also {
|
||||
if (packageDirective == null) {
|
||||
val whiteSpace = importList.nextSibling
|
||||
if (whiteSpace is PsiWhiteSpace) {
|
||||
val newLineBreak = if (whiteSpace.isMultiLine()) {
|
||||
psiFactory.createWhiteSpace("\n" + whiteSpace.text)
|
||||
} else {
|
||||
psiFactory.createWhiteSpace("\n\n" + whiteSpace.text)
|
||||
}
|
||||
|
||||
whiteSpace.replace(newLineBreak)
|
||||
} else {
|
||||
file.addAfter(psiFactory.createNewLine(2), importList)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
val importPathComparator = ImportInsertHelperImpl(project).getImportSortComparator(file)
|
||||
val insertAfter = imports.lastOrNull {
|
||||
|
||||
+5
@@ -258,6 +258,11 @@ public class AddImportTestGenerated extends AbstractAddImportTest {
|
||||
runTest("testData/addImport/PropertyAlreadyImported2.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("RootPackageWithoutFormatter.kt")
|
||||
public void testRootPackageWithoutFormatter() throws Exception {
|
||||
runTest("testData/addImport/RootPackageWithoutFormatter.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("StdlibImportsLast.kt")
|
||||
public void testStdlibImportsLast() throws Exception {
|
||||
runTest("testData/addImport/StdlibImportsLast.kt");
|
||||
|
||||
+5
@@ -301,6 +301,11 @@ public abstract class ShortenRefsTestGenerated extends AbstractShortenRefsTest {
|
||||
runTest("testData/shortenRefs/type/ClassSameNameAsPackage.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("ClassSameNameAsPackageWithSpace.kt")
|
||||
public void testClassSameNameAsPackageWithSpace() throws Exception {
|
||||
runTest("testData/shortenRefs/type/ClassSameNameAsPackageWithSpace.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("delegationSpecifier.kt")
|
||||
public void testDelegationSpecifier() throws Exception {
|
||||
runTest("testData/shortenRefs/type/delegationSpecifier.kt");
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
package one.two
|
||||
|
||||
class MyClass
|
||||
@@ -0,0 +1,5 @@
|
||||
//@formatter:off
|
||||
// IMPORT: class: one.two.MyClass
|
||||
fun test() {
|
||||
MyClass()
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import one.two.*
|
||||
|
||||
//@formatter:off
|
||||
// IMPORT: class: one.two.MyClass
|
||||
fun test() {
|
||||
MyClass()
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
package same
|
||||
|
||||
class same() {}
|
||||
@@ -0,0 +1,3 @@
|
||||
//@formatter:off
|
||||
fun f(s: <selection>_root_ide_package_.same.same</selection>) {
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
import same.same
|
||||
|
||||
//@formatter:off
|
||||
fun f(s: same) {
|
||||
}
|
||||
+5
@@ -258,6 +258,11 @@ public class PerformanceAddImportTestGenerated extends AbstractPerformanceAddImp
|
||||
runTest("../idea/tests/testData/addImport/PropertyAlreadyImported2.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("RootPackageWithoutFormatter.kt")
|
||||
public void testRootPackageWithoutFormatter() throws Exception {
|
||||
runTest("../idea/tests/testData/addImport/RootPackageWithoutFormatter.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("StdlibImportsLast.kt")
|
||||
public void testStdlibImportsLast() throws Exception {
|
||||
runTest("../idea/tests/testData/addImport/StdlibImportsLast.kt");
|
||||
|
||||
Reference in New Issue
Block a user