[kotlin] Fix incorrect error on moving file and object at the same time

#KTIJ-29825 Fixed

GitOrigin-RevId: 705f1a01a1f529a68cb368b04dfe4221b62429ff
This commit is contained in:
Bart van Helvert
2024-05-11 17:30:53 +02:00
committed by intellij-monorepo-bot
parent b70ef0fea3
commit b405c2a7f7
2 changed files with 19 additions and 1 deletions

View File

@@ -167,7 +167,7 @@ sealed class K2MoveModel {
fun isMultiFileMove(movedElements: List<KtElement>) = movedElements.map { it.containingFile }.toSet().size > 1
fun PsiElement?.isSingleClassContainer(): Boolean {
if (this !is KtClass) return false
if (this !is KtClassOrObject) return false
val file = parent as? KtFile ?: return false
return this == file.declarations.singleOrNull()
}

View File

@@ -70,7 +70,25 @@ class K2MoveModelTest : KotlinLightCodeInsightFixtureTestCase() {
class Foo { }
""".trimIndent()) as KtFile
val barClass = (myFixture.addFileToProject("Bar.kt", """
class Bar { }
""".trimIndent()) as KtFile).declarations.single()
val moveModel = K2MoveModel.create(arrayOf(fooFile, barClass), null)
assertInstanceOf<K2MoveModel.Files>(moveModel)
val moveFilesModel = moveModel as K2MoveModel.Files
assertSize(2, moveFilesModel.source.elements)
val firstElem = moveFilesModel.source.elements.first()
assert(firstElem.name == "Foo.kt")
val lastElem = moveFilesModel.source.elements.last()
assert(lastElem.name == "Bar.kt")
}
fun `test single object and file from source directory without target move`() {
PsiTestUtil.addSourceRoot(module, myFixture.getTempDirFixture().getFile("")!!)
val fooFile = myFixture.addFileToProject("Foo.kt", """
class Foo { }
""".trimIndent()) as KtFile
val barClass = (myFixture.addFileToProject("Bar.kt", """
object Bar { }
""".trimIndent()) as KtFile).declarations.single()
val moveModel = K2MoveModel.create(arrayOf(fooFile, barClass), null)
assertInstanceOf<K2MoveModel.Files>(moveModel)