From 690fb47cbbd78b41c295df7bf8d0ca43e584440d Mon Sep 17 00:00:00 2001 From: Andrei Klunnyi Date: Fri, 22 Jan 2021 14:41:19 +0100 Subject: [PATCH] KT-44079 [Sealed Interfaces]: move refactoring update The idea behind this commit is that Move Refactoring should warn developers in case their intention potentially breaks sealed hierarchies (members must share the same module and package). Provided algorithm has two goals: - prevent destruction of correct hierarchies - help in fixing broken ones --- .../messages/KotlinBundle.properties | 6 +- .../moveDeclarations/moveConflictUtils.kt | 200 ++++++++++++++---- .../after/source/Foo.kt | 7 - .../after/source/dummy.txt | 0 .../after/target/Expr.kt | 3 - .../before/source/Foo.kt | 6 - .../before/source/dummy.txt | 0 .../conflicts.txt | 1 - .../sealedClassWithSkippedSubclasses.test | 5 - .../after/source/Foo.kt | 5 - .../after/source/dummy.txt | 0 .../after/target/Const.kt | 5 - .../before/source/Foo.kt | 6 - .../before/source/dummy.txt | 0 .../conflicts.txt | 1 - .../sealedSubclassWithSkippedRoot.test | 5 - .../after/bar/SealedClass.kt | 5 - .../after/foo/KotlinReferences.kt | 5 - .../after/foo/SealedClass.kt | 5 - .../before/foo/KotlinReferences.kt | 3 - .../before/foo/SealedClass.kt | 7 - .../conflicts.txt | 1 - ...dClassWithNestedImplsToAnotherPackage.test | 5 - .../after/A/A.iml | 11 + .../after/A/src/other/SealedHierarchy.kt | 6 + .../after/A/src/sealed/SealedHierarchy.kt | 2 + .../before/A/A.iml | 11 + .../before/A/src/sealed/SealedHierarchy.kt | 7 + .../moveSealedCheckEntireHierarchy.test | 7 + .../moveSealedCheckNotMember/after/A/A.iml | 11 + .../A/src/other/NotSealedHierarchyMember.kt | 5 + .../after/A/src/sealed/SealedHierarchy.kt | 7 + .../moveSealedCheckNotMember/before/A/A.iml | 11 + .../before/A/src/sealed/SealedHierarchy.kt | 8 + .../moveSealedCheckNotMember.test | 7 + .../after/A/A.iml | 11 + .../A/src/sealedFirst/SealedHierarchyPartA.kt | 3 + .../A/src/sealedSecond/HierarchyClassA.kt | 5 + .../src/sealedSecond/SealedHierarchyPartB.kt | 3 + .../before/A/A.iml | 11 + .../A/src/sealedFirst/SealedHierarchyPartA.kt | 6 + .../src/sealedSecond/SealedHierarchyPartB.kt | 3 + .../conflicts.txt | 1 + ...veSealedCheckOriginalPackageHasMember.test | 7 + .../after/A/A.iml | 12 ++ .../after/A/src/sealed/SealedHierarchy.kt | 3 + .../after/B/B.iml | 11 + .../after/B/src/sealed/SealedInterfaceA.kt | 3 + .../after/B/src/sealed/SealedInterfaceB.kt | 3 + .../before/A/A.iml | 12 ++ .../before/A/src/sealed/SealedHierarchy.kt | 4 + .../before/B/B.iml | 11 + .../before/B/src/sealed/SealedInterfaceB.kt | 3 + .../conflicts.txt | 1 + ...ckOriginalPackageHasMemberCrossModule.test | 7 + .../moveSealedCheckSingleSealed/after/A/A.iml | 11 + .../after/A/src/other/SealedInterfaceA.kt | 3 + .../after/A/src/sealed/SealedHierarchy.kt | 2 + .../before/A/A.iml | 11 + .../before/A/src/sealed/SealedHierarchy.kt | 3 + .../moveSealedCheckSingleSealed.test | 7 + .../after/A/A.iml | 11 + .../A/src/sealedFirst/SealedHierarchyPartA.kt | 2 + .../src/sealedSecond/SealedHierarchyPartA.kt | 4 + .../src/sealedSecond/SealedHierarchyPartB.kt | 3 + .../before/A/A.iml | 11 + .../A/src/sealedFirst/SealedHierarchyPartA.kt | 6 + .../src/sealedSecond/SealedHierarchyPartB.kt | 3 + ...moveSealedCheckTargetPackageHasMember.test | 7 + .../after/A/A.iml | 12 ++ .../after/A/src/sealed/SealedHierarchy.kt | 2 + .../after/B/B.iml | 11 + .../after/B/src/sealed/SealedHierarchy.kt | 4 + .../after/B/src/sealed/SealedInterfaceB.kt | 3 + .../before/A/A.iml | 12 ++ .../before/A/src/sealed/SealedHierarchy.kt | 4 + .../before/B/B.iml | 11 + .../before/B/src/sealed/SealedInterfaceB.kt | 3 + ...heckTargetPackageHasMemberCrossModule.test | 7 + .../after/A/A.iml | 11 + .../after/A/src/another/HierarchyClassA.kt | 6 + .../after/A/src/sealed/SealedHierarchy.kt | 5 + .../before/A/A.iml | 11 + .../before/A/src/sealed/SealedHierarchy.kt | 6 + .../conflicts.txt | 1 + ...eSealedCheckTargetPackageHasNoMembers.test | 7 + .../after/A/A.iml | 12 ++ .../after/A/src/sealed/SealedHierarchy.kt | 5 + .../after/B/B.iml | 11 + .../after/B/src/sealed/HelloGitEmptyDir.kt | 3 + .../after/B/src/sealed/SealedInterfaceA.kt | 3 + .../before/A/A.iml | 12 ++ .../before/A/src/sealed/SealedHierarchy.kt | 6 + .../before/B/B.iml | 11 + .../before/B/src/sealed/HelloGitEmptyDir.kt | 3 + .../conflicts.txt | 1 + ...kTargetPackageHasNoMembersCrossModule.test | 7 + .../after/A/A.iml | 12 ++ .../after/A/src/sealed/SealedHierarchy.kt | 17 ++ .../after/B/B.iml | 11 + .../after/B/src/sealed/HelloGitEmptyDir.kt | 3 + .../after/B/src/sealed/SealedInterfaceA.kt | 3 + .../before/A/A.iml | 12 ++ .../before/A/src/sealed/SealedHierarchy.kt | 18 ++ .../before/B/B.iml | 11 + .../before/B/src/sealed/HelloGitEmptyDir.kt | 3 + .../conflicts.txt | 1 + ...rgetPackageHasNoMembersCrossModuleBig.test | 7 + .../after/A/A.iml | 11 + .../after/A/src/sealed/HierarchyClassA.kt | 3 + .../after/A/src/sealed/SealedHierarchy.kt | 5 + .../before/A/A.iml | 11 + .../before/A/src/sealed/SealedHierarchy.kt | 6 + .../moveSealedCheckWithinPackage.test | 7 + .../refactoring/move/MoveTestGenerated.java | 15 -- .../move/MultiModuleMoveTestGenerated.java | 55 +++++ 116 files changed, 847 insertions(+), 132 deletions(-) delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/after/source/Foo.kt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/after/source/dummy.txt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/after/target/Expr.kt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/before/source/Foo.kt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/before/source/dummy.txt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/conflicts.txt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/sealedClassWithSkippedSubclasses.test delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/after/source/Foo.kt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/after/source/dummy.txt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/after/target/Const.kt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/before/source/Foo.kt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/before/source/dummy.txt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/conflicts.txt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/sealedSubclassWithSkippedRoot.test delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/after/bar/SealedClass.kt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/after/foo/KotlinReferences.kt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/after/foo/SealedClass.kt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/before/foo/KotlinReferences.kt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/before/foo/SealedClass.kt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/conflicts.txt delete mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/moveSealedClassWithNestedImplsToAnotherPackage.test create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/after/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/after/A/src/other/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/after/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/before/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/before/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/moveSealedCheckEntireHierarchy.test create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/after/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/after/A/src/other/NotSealedHierarchyMember.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/after/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/before/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/before/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/moveSealedCheckNotMember.test create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/src/sealedFirst/SealedHierarchyPartA.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/src/sealedSecond/HierarchyClassA.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/src/sealedSecond/SealedHierarchyPartB.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/before/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/before/A/src/sealedFirst/SealedHierarchyPartA.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/before/A/src/sealedSecond/SealedHierarchyPartB.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/conflicts.txt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/moveSealedCheckOriginalPackageHasMember.test create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/B/B.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/B/src/sealed/SealedInterfaceA.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/B/src/sealed/SealedInterfaceB.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/B/B.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/B/src/sealed/SealedInterfaceB.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/conflicts.txt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/moveSealedCheckOriginalPackageHasMemberCrossModule.test create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/after/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/after/A/src/other/SealedInterfaceA.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/after/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/before/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/before/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/moveSealedCheckSingleSealed.test create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/src/sealedFirst/SealedHierarchyPartA.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/src/sealedSecond/SealedHierarchyPartA.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/src/sealedSecond/SealedHierarchyPartB.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/before/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/before/A/src/sealedFirst/SealedHierarchyPartA.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/before/A/src/sealedSecond/SealedHierarchyPartB.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/moveSealedCheckTargetPackageHasMember.test create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/B/B.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/B/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/B/src/sealed/SealedInterfaceB.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/B/B.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/B/src/sealed/SealedInterfaceB.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/moveSealedCheckTargetPackageHasMemberCrossModule.test create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/after/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/after/A/src/another/HierarchyClassA.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/after/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/before/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/before/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/conflicts.txt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/moveSealedCheckTargetPackageHasNoMembers.test create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/B/B.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/B/src/sealed/HelloGitEmptyDir.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/B/src/sealed/SealedInterfaceA.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/B/B.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/B/src/sealed/HelloGitEmptyDir.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/conflicts.txt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/moveSealedCheckTargetPackageHasNoMembersCrossModule.test create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/B/B.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/B/src/sealed/HelloGitEmptyDir.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/B/src/sealed/SealedInterfaceA.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/B/B.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/B/src/sealed/HelloGitEmptyDir.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/conflicts.txt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig.test create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/after/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/after/A/src/sealed/HierarchyClassA.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/after/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/before/A/A.iml create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/before/A/src/sealed/SealedHierarchy.kt create mode 100644 idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/moveSealedCheckWithinPackage.test diff --git a/idea/resources-en/messages/KotlinBundle.properties b/idea/resources-en/messages/KotlinBundle.properties index 7b7958279b9..533ae28b198 100644 --- a/idea/resources-en/messages/KotlinBundle.properties +++ b/idea/resources-en/messages/KotlinBundle.properties @@ -804,7 +804,6 @@ selected.code.fragment.has.multiple.exit.points=Selected code fragment has multi selected.code.fragment.has.multiple.output.values=Selected code fragment has more than 3 output values: selected.code.fragment.has.output.values.and.exit.points=Selected code fragment has output values as well as alternative exit points setter.of.0.will.become.invisible.after.extraction=Setter of {0} will become invisible after extraction -text.0.1.must.be.moved.with.sealed.parent.class.and.all.its.subclasses={0} ''{1}'' must be moved with sealed parent class and all its subclasses text.0.already.contains.1={0} already contains {1} text.0.already.contains.nested.class.1={0} already contains nested class named {1} text.0.already.declared.in.1={0} is already declared in {1} @@ -946,7 +945,10 @@ text.rename.overloads.to=Rename overloads to: text.rename.parameters.in.hierarchy.to=Rename parameter in hierarchy to: text.rename.parameters.title=Rename Parameters text.rename.warning=Rename warning -text.sealed.class.0.must.be.moved.with.all.its.subclasses=Sealed class ''{0}'' must be moved with all its subclasses + +text.sealed.broken.hierarchy.none.in.target=Sealed hierarchy of ''{0}'' would be split. None of its members reside in the package ''{1}'' of module ''{2}'': {3}. +text.sealed.broken.hierarchy.still.in.source=Sealed hierarchy of ''{0}'' would be split. Package ''{1}'' of module ''{2}'' would still contain its members: {3}. + text.select.target.code.block.file=Select target code block / file text.select.target.code.block=Select target code block text.select.target.file=Select target file diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/moveConflictUtils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/moveConflictUtils.kt index f1d2678a8fe..fdcf2b8ca05 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/moveConflictUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/moveConflictUtils.kt @@ -15,6 +15,8 @@ import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.* import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.SearchScope +import com.intellij.psi.search.searches.ClassInheritorsSearch +import com.intellij.psi.search.searches.ClassInheritorsSearch.SearchParameters import com.intellij.psi.search.searches.ReferencesSearch import com.intellij.psi.util.PsiTreeUtil import com.intellij.refactoring.RefactoringBundle @@ -23,10 +25,11 @@ import com.intellij.refactoring.util.MoveRenameUsageInfo import com.intellij.refactoring.util.NonCodeUsageInfo import com.intellij.refactoring.util.RefactoringUIUtil import com.intellij.usageView.UsageInfo -import com.intellij.usageView.UsageViewTypeLocation import com.intellij.util.containers.MultiMap import org.jetbrains.kotlin.asJava.namedUnwrappedElement +import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.asJava.toLightMethods +import org.jetbrains.kotlin.backend.common.serialization.findPackage import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.impl.MutablePackageFragmentDescriptor @@ -37,8 +40,13 @@ import org.jetbrains.kotlin.idea.caches.project.implementedModules import org.jetbrains.kotlin.idea.caches.resolve.* import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaMemberDescriptor import org.jetbrains.kotlin.idea.caches.resolve.util.hasJavaResolutionFacade +import org.jetbrains.kotlin.idea.caches.resolve.util.javaResolutionFacade +import org.jetbrains.kotlin.idea.caches.resolve.util.resolveToDescriptor import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde +import org.jetbrains.kotlin.idea.core.getPackage import org.jetbrains.kotlin.idea.core.isInTestSourceContentKotlinAware +import org.jetbrains.kotlin.idea.core.util.toPsiDirectory +import org.jetbrains.kotlin.idea.core.util.toPsiFile import org.jetbrains.kotlin.idea.imports.importableFqName import org.jetbrains.kotlin.idea.project.TargetPlatformDetector import org.jetbrains.kotlin.idea.project.forcedTargetPlatform @@ -46,9 +54,12 @@ import org.jetbrains.kotlin.idea.refactoring.getUsageContext import org.jetbrains.kotlin.idea.refactoring.move.KotlinMoveUsage import org.jetbrains.kotlin.idea.refactoring.pullUp.renderForConflicts import org.jetbrains.kotlin.idea.search.and +import org.jetbrains.kotlin.idea.search.getKotlinFqName import org.jetbrains.kotlin.idea.search.not +import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor import org.jetbrains.kotlin.idea.util.projectStructure.getModule import org.jetbrains.kotlin.idea.util.projectStructure.module +import org.jetbrains.kotlin.js.resolve.diagnostics.findPsi import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities import org.jetbrains.kotlin.name.FqName @@ -61,10 +72,8 @@ import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.renderer.ParameterNameRenderingPolicy import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.DescriptorUtils -import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull -import org.jetbrains.kotlin.resolve.descriptorUtil.getImportableDescriptor -import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassNotAny -import org.jetbrains.kotlin.resolve.descriptorUtil.isSubclassOf +import org.jetbrains.kotlin.resolve.descriptorUtil.* +import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.resolve.lazy.descriptors.findPackageFragmentForFile import org.jetbrains.kotlin.resolve.source.KotlinSourceElement @@ -522,43 +531,11 @@ class MoveConflictChecker( } private fun checkSealedClassMove(conflicts: MultiMap) { - val visited = HashSet() + val hierarchyChecker = SealedHierarchyChecker() + for (elementToMove in elementsToMove) { - if (!visited.add(elementToMove)) continue if (elementToMove !is KtClassOrObject) continue - - val rootClass: KtClass - val rootClassDescriptor: ClassDescriptor - if (elementToMove is KtClass && elementToMove.isSealed()) { - rootClass = elementToMove - rootClassDescriptor = rootClass.resolveToDescriptorIfAny() ?: return - } else { - val classDescriptor = elementToMove.resolveToDescriptorIfAny() ?: return - val superClassDescriptor = classDescriptor.getSuperClassNotAny() ?: return - if (superClassDescriptor.modality != Modality.SEALED) return - rootClassDescriptor = superClassDescriptor - rootClass = rootClassDescriptor.source.getPsi() as? KtClass ?: return - } - - val subclasses = rootClassDescriptor.sealedSubclasses.mapNotNull { it.source.getPsi() } - if (subclasses.isEmpty()) continue - - visited.add(rootClass) - visited.addAll(subclasses) - - if (isToBeMoved(rootClass) && subclasses.all { isToBeMoved(it) }) continue - - val message = if (elementToMove == rootClass) { - KotlinBundle.message("text.sealed.class.0.must.be.moved.with.all.its.subclasses", rootClass.name.toString()) - } else { - val type = ElementDescriptionUtil.getElementDescription(elementToMove, UsageViewTypeLocation.INSTANCE).capitalize() - KotlinBundle.message( - "text.0.1.must.be.moved.with.sealed.parent.class.and.all.its.subclasses", - type, - rootClass.name.toString() - ) - } - conflicts.putValue(elementToMove, message) + hierarchyChecker.reportIfMoveIsDestructive(elementToMove)?.let { conflicts.putValue(elementToMove, it) } } } @@ -666,6 +643,149 @@ class MoveConflictChecker( checkSealedClassMove(conflicts) checkNameClashes(conflicts) } + + + private inner class SealedHierarchyChecker { + + private val visited: MutableSet = mutableSetOf() + + @OptIn(ExperimentalStdlibApi::class) + fun reportIfMoveIsDestructive(classToMove: KtClassOrObject): String? { + val classToMoveDesc = classToMove.resolveToDescriptorIfAny() ?: return null + if (classToMoveDesc in visited) return null + + val directSealedParents = classToMoveDesc.listDirectSealedParents() + + // Not a part of sealed hierarchy? + if (!classToMoveDesc.isSealed() && directSealedParents.isEmpty()) + return null + + // Standalone sealed class: no sealed parents, no subclasses? + if (classToMoveDesc.isSealed() && directSealedParents.isEmpty() && classToMoveDesc.listAllSubclasses().isEmpty()) + return null + + // Ok, we're dealing with sealed hierarchy member + val otherHierarchyMembers = classToMoveDesc.listSealedHierarchyMembers().apply { remove(classToMove) } + assert(otherHierarchyMembers.isNotEmpty()) + + // Entire hierarchy is to be moved at once? + if (otherHierarchyMembers.all { isToBeMoved(it) }) + return null + + // Hierarchy might be split (broken) (members reside in different packages) and we shouldn't prevent intention to fix it. + // That is why it's ok to move the class to a package where at least one member of hierarchy resides. In case the hierarchy is + // fully correct all its members share the same package. + + val targetModule = moveTarget.getTargetModule(project) ?: return null + val targetPackage = moveTarget.getTargetPackage() ?: return null + + val className = classToMove.nameAsSafeName.asString() + + if (otherHierarchyMembers.none { it.residesIn(targetModule, targetPackage) }) { + val hierarchyMembers = buildList { add(classToMove); addAll(otherHierarchyMembers) }.toNamesList() + return KotlinBundle.message( + "text.sealed.broken.hierarchy.none.in.target", + className, moveTarget.getPackageName(), targetModule.name, hierarchyMembers + ) + } + + // Ok, class joins at least one member of the hierarchy. But probably it leaves the package where other members still exist. + // It doesn't mean we should prevent such move but it might be good for the user to be aware of the situation. + + val moduleToMoveFrom = classToMove.module ?: return null + val packageToMoveFrom = classToMoveDesc.findPsiPackage(moduleToMoveFrom) ?: return null + + val membersRemainingInOriginalPackage = + otherHierarchyMembers.filter { it.residesIn(moduleToMoveFrom, packageToMoveFrom) && !isToBeMoved(it) }.toList() + + if ((targetPackage != packageToMoveFrom || targetModule != moduleToMoveFrom) && + membersRemainingInOriginalPackage.any { !isToBeMoved(it) } + ) { + return KotlinBundle.message( + "text.sealed.broken.hierarchy.still.in.source", + className, packageToMoveFrom.getNameOrDefault(), moduleToMoveFrom.name, membersRemainingInOriginalPackage.toNamesList() + ) + } + + return null + } + + private fun KtClassOrObject.residesIn(targetModule: Module, targetPackage: PsiPackage): Boolean { + val myModule = module ?: return false + val myPackage = descriptor?.findPsiPackage(myModule) + return myPackage == targetPackage && myModule == targetModule + } + + private fun DeclarationDescriptor.findPsiPackage(module: Module): PsiPackage? { + val fqName = findPackage().fqName + return KotlinJavaPsiFacade.getInstance(project).findPackage(fqName.asString(), GlobalSearchScope.moduleScope(module)) + } + + private fun KotlinMoveTarget.getTargetPackage(): PsiPackage? { + + fun tryGetPackageFromTargetContainer(): PsiPackage? { + val fqName = targetContainerFqName ?: return null + val module = getTargetModule(project) ?: return null + return KotlinJavaPsiFacade.getInstance(project).findPackage(fqName.asString(), GlobalSearchScope.moduleScope(module)) + } + + return (this as? KotlinDirectoryBasedMoveTarget)?.directory?.getPackage() + ?: targetFile?.toPsiDirectory(project)?.getPackage() + ?: targetFile?.toPsiFile(project)?.containingDirectory?.getPackage() + ?: tryGetPackageFromTargetContainer() + } + + private fun KotlinMoveTarget.getPackageName(): String = + targetContainerFqName?.asString()?.takeIf { it.isNotEmpty() } ?: "default" // PsiPackage might not exist by this moment + + private fun PsiPackage?.getNameOrDefault(): String = this?.qualifiedName?.takeIf { it.isNotEmpty() } ?: "default" + + @OptIn(ExperimentalStdlibApi::class) + private fun ClassDescriptor.listDirectSealedParents(): List = buildList { + getSuperClassNotAny()?.takeIf { it.isSealed() }?.let { this.add(it) } + getSuperInterfaces().filter { it.isSealed() }.let { this.addAll(it) } + } + + private fun ClassDescriptor.listAllSubclasses(): List { + val sealedKtClass = findPsi() as? KtClassOrObject ?: return emptyList() + val lightClass = sealedKtClass.toLightClass() ?: return emptyList() + val searchScope = GlobalSearchScope.projectScope(sealedKtClass.project) + val searchParameters = SearchParameters(lightClass, searchScope, false, true, false) + + return ClassInheritorsSearch.search(searchParameters) + .map mapper@{ + val resolutionFacade = it.javaResolutionFacade() ?: return@mapper null + it.resolveToDescriptor(resolutionFacade) + }.filterNotNull() + .sortedBy(ClassDescriptor::getName) + } + + private fun ClassDescriptor.listSealedHierarchyMembers(): MutableList { + + fun ClassDescriptor.listMembersInternal(members: MutableList) { + val alreadyVisited = !visited.add(this) + if (alreadyVisited) return + + if (isSealed()) { + members.add(this) + listDirectSealedParents().forEach { it.listMembersInternal(members) } + listAllSubclasses().forEach { it.listMembersInternal(members) } + } else { + val directSuperSealed = listDirectSealedParents() + if (directSuperSealed.isNotEmpty()) { + members.add(this) + directSuperSealed.forEach { it.listMembersInternal(members) } + } + } + } + + val members = mutableListOf() + listMembersInternal(members) + return members.mapNotNull { it.findPsi() as? KtClassOrObject }.toMutableList() + } + + private fun List.toNamesList(): List = mapNotNull { el -> el.getKotlinFqName()?.asString() }.toList() + } } fun analyzeConflictsInFile( diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/after/source/Foo.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/after/source/Foo.kt deleted file mode 100644 index 2158e3ba303..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/after/source/Foo.kt +++ /dev/null @@ -1,7 +0,0 @@ -package source - -import target.Expr - -data class Const(val number: Double) : Expr() -data class Sum(val e1: Expr, val e2: Expr) : Expr() -object NotANumber : Expr() \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/after/source/dummy.txt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/after/source/dummy.txt deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/after/target/Expr.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/after/target/Expr.kt deleted file mode 100644 index 2e47c77daa5..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/after/target/Expr.kt +++ /dev/null @@ -1,3 +0,0 @@ -package target - -sealed class Expr \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/before/source/Foo.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/before/source/Foo.kt deleted file mode 100644 index 5cb14c9b97f..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/before/source/Foo.kt +++ /dev/null @@ -1,6 +0,0 @@ -package source - -sealed class Expr -data class Const(val number: Double) : Expr() -data class Sum(val e1: Expr, val e2: Expr) : Expr() -object NotANumber : Expr() \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/before/source/dummy.txt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/before/source/dummy.txt deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/conflicts.txt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/conflicts.txt deleted file mode 100644 index 756eb0a8202..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/conflicts.txt +++ /dev/null @@ -1 +0,0 @@ -Sealed class 'Expr' must be moved with all its subclasses diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/sealedClassWithSkippedSubclasses.test b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/sealedClassWithSkippedSubclasses.test deleted file mode 100644 index 1a649bb5efc..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/sealedClassWithSkippedSubclasses.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "mainFile": "source/Foo.kt", - "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", - "targetPackage": "target" -} diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/after/source/Foo.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/after/source/Foo.kt deleted file mode 100644 index bf5d08ed03c..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/after/source/Foo.kt +++ /dev/null @@ -1,5 +0,0 @@ -package source - -sealed class Expr -data class Sum(val e1: Expr, val e2: Expr) : Expr() -object NotANumber : Expr() \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/after/source/dummy.txt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/after/source/dummy.txt deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/after/target/Const.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/after/target/Const.kt deleted file mode 100644 index b129fc50628..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/after/target/Const.kt +++ /dev/null @@ -1,5 +0,0 @@ -package target - -import source.Expr - -data class Const(val number: Double) : Expr() \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/before/source/Foo.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/before/source/Foo.kt deleted file mode 100644 index 737027eefe1..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/before/source/Foo.kt +++ /dev/null @@ -1,6 +0,0 @@ -package source - -sealed class Expr -data class Const(val number: Double) : Expr() -data class Sum(val e1: Expr, val e2: Expr) : Expr() -object NotANumber : Expr() \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/before/source/dummy.txt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/before/source/dummy.txt deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/conflicts.txt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/conflicts.txt deleted file mode 100644 index 08ad262dd99..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/conflicts.txt +++ /dev/null @@ -1 +0,0 @@ -Class 'Expr' must be moved with sealed parent class and all its subclasses diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/sealedSubclassWithSkippedRoot.test b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/sealedSubclassWithSkippedRoot.test deleted file mode 100644 index 1a649bb5efc..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/sealedSubclassWithSkippedRoot.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "mainFile": "source/Foo.kt", - "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", - "targetPackage": "target" -} diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/after/bar/SealedClass.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/after/bar/SealedClass.kt deleted file mode 100644 index 2994bf4dd8f..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/after/bar/SealedClass.kt +++ /dev/null @@ -1,5 +0,0 @@ -package bar - -public sealed class SealedClass { - public class Impl1 : SealedClass() {} -} \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/after/foo/KotlinReferences.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/after/foo/KotlinReferences.kt deleted file mode 100644 index a5105b77f32..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/after/foo/KotlinReferences.kt +++ /dev/null @@ -1,5 +0,0 @@ -package foo - -import bar.SealedClass - -val v = SealedClass::Impl1 \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/after/foo/SealedClass.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/after/foo/SealedClass.kt deleted file mode 100644 index 18534fbbc34..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/after/foo/SealedClass.kt +++ /dev/null @@ -1,5 +0,0 @@ -package foo - -import bar.SealedClass - -public class Impl2 : SealedClass() {} \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/before/foo/KotlinReferences.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/before/foo/KotlinReferences.kt deleted file mode 100644 index 84b14682a40..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/before/foo/KotlinReferences.kt +++ /dev/null @@ -1,3 +0,0 @@ -package foo - -val v = SealedClass::Impl1 \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/before/foo/SealedClass.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/before/foo/SealedClass.kt deleted file mode 100644 index f7e9572c67b..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/before/foo/SealedClass.kt +++ /dev/null @@ -1,7 +0,0 @@ -package foo - -public sealed class SealedClass { - public class Impl1 : SealedClass() {} -} - -public class Impl2 : SealedClass() {} \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/conflicts.txt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/conflicts.txt deleted file mode 100644 index 4e6bd3f2df2..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/conflicts.txt +++ /dev/null @@ -1 +0,0 @@ -Sealed class 'SealedClass' must be moved with all its subclasses diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/moveSealedClassWithNestedImplsToAnotherPackage.test b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/moveSealedClassWithNestedImplsToAnotherPackage.test deleted file mode 100644 index 75e06c3b8e6..00000000000 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/moveSealedClassWithNestedImplsToAnotherPackage.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "mainFile": "foo/SealedClass.kt", - "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", - "targetPackage": "bar" -} \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/after/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/after/A/A.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/after/A/A.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/after/A/src/other/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/after/A/src/other/SealedHierarchy.kt new file mode 100644 index 00000000000..73b5111042c --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/after/A/src/other/SealedHierarchy.kt @@ -0,0 +1,6 @@ +package other + +sealed interface SealedInterfaceA +sealed interface SealedInterfaceB +sealed class HierarchyClassA: SealedInterfaceA, SealedInterfaceB +class NonSealedButMember: HierarchyClassA() \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/after/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/after/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..9ecbe99d9e5 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/after/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,2 @@ +package sealed + diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/before/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/before/A/A.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/before/A/A.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/before/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/before/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..452c384ab76 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/before/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,7 @@ +package sealed + +sealed interface SealedInterfaceA +sealed interface SealedInterfaceB + +sealed class HierarchyClassA: SealedInterfaceA, SealedInterfaceB +class NonSealedButMember: HierarchyClassA() \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/moveSealedCheckEntireHierarchy.test b/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/moveSealedCheckEntireHierarchy.test new file mode 100644 index 00000000000..fe8f7b0209a --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/moveSealedCheckEntireHierarchy.test @@ -0,0 +1,7 @@ +{ + "mainFile": "A/src/sealed/SealedHierarchy.kt", + "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", + "targetPackage": "other", + "targetSourceRoot": "A/src", + "withRuntime": "false" +} diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/after/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/after/A/A.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/after/A/A.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/after/A/src/other/NotSealedHierarchyMember.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/after/A/src/other/NotSealedHierarchyMember.kt new file mode 100644 index 00000000000..c2aef401748 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/after/A/src/other/NotSealedHierarchyMember.kt @@ -0,0 +1,5 @@ +package other + +import sealed.DerivedFromSealed + +class NotSealedHierarchyMember: DerivedFromSealed() \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/after/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/after/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..50c4d7e8309 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/after/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,7 @@ +package sealed + +sealed interface SealedInterfaceA +sealed interface SealedInterfaceB + +sealed class HierarchySealedClass: SealedInterfaceA, SealedInterfaceB +class DerivedFromSealed: HierarchySealedClass() diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/before/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/before/A/A.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/before/A/A.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/before/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/before/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..04224b0a90d --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/before/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,8 @@ +package sealed + +sealed interface SealedInterfaceA +sealed interface SealedInterfaceB + +sealed class HierarchySealedClass: SealedInterfaceA, SealedInterfaceB +class DerivedFromSealed: HierarchySealedClass() +class NotSealedHierarchyMember: DerivedFromSealed() \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/moveSealedCheckNotMember.test b/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/moveSealedCheckNotMember.test new file mode 100644 index 00000000000..fe8f7b0209a --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/moveSealedCheckNotMember.test @@ -0,0 +1,7 @@ +{ + "mainFile": "A/src/sealed/SealedHierarchy.kt", + "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", + "targetPackage": "other", + "targetSourceRoot": "A/src", + "withRuntime": "false" +} diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/A.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/A.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/src/sealedFirst/SealedHierarchyPartA.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/src/sealedFirst/SealedHierarchyPartA.kt new file mode 100644 index 00000000000..a0de0d63bc7 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/src/sealedFirst/SealedHierarchyPartA.kt @@ -0,0 +1,3 @@ +package sealedFirst + +sealed interface SealedInterfaceA diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/src/sealedSecond/HierarchyClassA.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/src/sealedSecond/HierarchyClassA.kt new file mode 100644 index 00000000000..325f24cf791 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/src/sealedSecond/HierarchyClassA.kt @@ -0,0 +1,5 @@ +package sealedSecond + +import sealedFirst.SealedInterfaceA + +sealed class HierarchyClassA: SealedInterfaceA, SealedInterfaceB \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/src/sealedSecond/SealedHierarchyPartB.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/src/sealedSecond/SealedHierarchyPartB.kt new file mode 100644 index 00000000000..f610757add9 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/after/A/src/sealedSecond/SealedHierarchyPartB.kt @@ -0,0 +1,3 @@ +package sealedSecond + +sealed interface SealedInterfaceB diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/before/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/before/A/A.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/before/A/A.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/before/A/src/sealedFirst/SealedHierarchyPartA.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/before/A/src/sealedFirst/SealedHierarchyPartA.kt new file mode 100644 index 00000000000..1d10daf57b0 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/before/A/src/sealedFirst/SealedHierarchyPartA.kt @@ -0,0 +1,6 @@ +package sealedFirst + +import sealedSecond.SealedInterfaceB + +sealed interface SealedInterfaceA +sealed class HierarchyClassA: SealedInterfaceA, SealedInterfaceB diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/before/A/src/sealedSecond/SealedHierarchyPartB.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/before/A/src/sealedSecond/SealedHierarchyPartB.kt new file mode 100644 index 00000000000..f610757add9 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/before/A/src/sealedSecond/SealedHierarchyPartB.kt @@ -0,0 +1,3 @@ +package sealedSecond + +sealed interface SealedInterfaceB diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/conflicts.txt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/conflicts.txt new file mode 100644 index 00000000000..ab1702877e1 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/conflicts.txt @@ -0,0 +1 @@ +Sealed hierarchy of 'HierarchyClassA' would be split. Package 'sealedFirst' of module 'A' would still contain its members: [sealedFirst.SealedInterfaceA]. \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/moveSealedCheckOriginalPackageHasMember.test b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/moveSealedCheckOriginalPackageHasMember.test new file mode 100644 index 00000000000..17bdcad937f --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/moveSealedCheckOriginalPackageHasMember.test @@ -0,0 +1,7 @@ +{ + "mainFile": "A/src/sealedFirst/SealedHierarchyPartA.kt", + "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", + "targetPackage": "sealedSecond", + "targetSourceRoot": "A/src", + "withRuntime": "false" +} diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/A/A.iml new file mode 100644 index 00000000000..0f75d4273fc --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/A/A.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..54e5f2cde16 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,3 @@ +package sealed + +sealed class HierarchyClassA: SealedInterfaceA, SealedInterfaceB diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/B/B.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/B/B.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/B/B.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/B/src/sealed/SealedInterfaceA.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/B/src/sealed/SealedInterfaceA.kt new file mode 100644 index 00000000000..25d98326be8 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/B/src/sealed/SealedInterfaceA.kt @@ -0,0 +1,3 @@ +package sealed + +sealed interface SealedInterfaceA \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/B/src/sealed/SealedInterfaceB.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/B/src/sealed/SealedInterfaceB.kt new file mode 100644 index 00000000000..458be202c44 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/after/B/src/sealed/SealedInterfaceB.kt @@ -0,0 +1,3 @@ +package sealed + +sealed interface SealedInterfaceB \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/A/A.iml new file mode 100644 index 00000000000..0f75d4273fc --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/A/A.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..e4c13d4d341 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,4 @@ +package sealed + +sealed interface SealedInterfaceA +sealed class HierarchyClassA: SealedInterfaceA, SealedInterfaceB diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/B/B.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/B/B.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/B/B.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/B/src/sealed/SealedInterfaceB.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/B/src/sealed/SealedInterfaceB.kt new file mode 100644 index 00000000000..458be202c44 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/before/B/src/sealed/SealedInterfaceB.kt @@ -0,0 +1,3 @@ +package sealed + +sealed interface SealedInterfaceB \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/conflicts.txt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/conflicts.txt new file mode 100644 index 00000000000..bce916d7fc2 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/conflicts.txt @@ -0,0 +1 @@ +Sealed hierarchy of 'SealedInterfaceA' would be split. Package 'sealed' of module 'A' would still contain its members: [sealed.HierarchyClassA]. \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/moveSealedCheckOriginalPackageHasMemberCrossModule.test b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/moveSealedCheckOriginalPackageHasMemberCrossModule.test new file mode 100644 index 00000000000..515ff868809 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/moveSealedCheckOriginalPackageHasMemberCrossModule.test @@ -0,0 +1,7 @@ +{ + "mainFile": "A/src/sealed/SealedHierarchy.kt", + "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", + "targetPackage": "sealed", + "targetSourceRoot": "B/src", + "withRuntime": "false" +} diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/after/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/after/A/A.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/after/A/A.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/after/A/src/other/SealedInterfaceA.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/after/A/src/other/SealedInterfaceA.kt new file mode 100644 index 00000000000..afed23756e8 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/after/A/src/other/SealedInterfaceA.kt @@ -0,0 +1,3 @@ +package other + +sealed interface SealedInterfaceA \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/after/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/after/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..9ecbe99d9e5 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/after/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,2 @@ +package sealed + diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/before/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/before/A/A.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/before/A/A.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/before/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/before/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..89ef43d2f66 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/before/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,3 @@ +package sealed + +sealed interface SealedInterfaceA \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/moveSealedCheckSingleSealed.test b/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/moveSealedCheckSingleSealed.test new file mode 100644 index 00000000000..fe8f7b0209a --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/moveSealedCheckSingleSealed.test @@ -0,0 +1,7 @@ +{ + "mainFile": "A/src/sealed/SealedHierarchy.kt", + "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", + "targetPackage": "other", + "targetSourceRoot": "A/src", + "withRuntime": "false" +} diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/A.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/A.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/src/sealedFirst/SealedHierarchyPartA.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/src/sealedFirst/SealedHierarchyPartA.kt new file mode 100644 index 00000000000..b58d23470d7 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/src/sealedFirst/SealedHierarchyPartA.kt @@ -0,0 +1,2 @@ +package sealedFirst + diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/src/sealedSecond/SealedHierarchyPartA.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/src/sealedSecond/SealedHierarchyPartA.kt new file mode 100644 index 00000000000..5aeb11b5b39 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/src/sealedSecond/SealedHierarchyPartA.kt @@ -0,0 +1,4 @@ +package sealedSecond + +sealed interface SealedInterfaceA +sealed class HierarchyClassA: SealedInterfaceA, SealedInterfaceB \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/src/sealedSecond/SealedHierarchyPartB.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/src/sealedSecond/SealedHierarchyPartB.kt new file mode 100644 index 00000000000..f610757add9 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/after/A/src/sealedSecond/SealedHierarchyPartB.kt @@ -0,0 +1,3 @@ +package sealedSecond + +sealed interface SealedInterfaceB diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/before/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/before/A/A.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/before/A/A.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/before/A/src/sealedFirst/SealedHierarchyPartA.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/before/A/src/sealedFirst/SealedHierarchyPartA.kt new file mode 100644 index 00000000000..af5250c4732 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/before/A/src/sealedFirst/SealedHierarchyPartA.kt @@ -0,0 +1,6 @@ +package sealedFirst + +import sealedSecond.SealedInterfaceB + +sealed interface SealedInterfaceA +sealed class HierarchyClassA: SealedInterfaceA, SealedInterfaceB diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/before/A/src/sealedSecond/SealedHierarchyPartB.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/before/A/src/sealedSecond/SealedHierarchyPartB.kt new file mode 100644 index 00000000000..f610757add9 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/before/A/src/sealedSecond/SealedHierarchyPartB.kt @@ -0,0 +1,3 @@ +package sealedSecond + +sealed interface SealedInterfaceB diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/moveSealedCheckTargetPackageHasMember.test b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/moveSealedCheckTargetPackageHasMember.test new file mode 100644 index 00000000000..17bdcad937f --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/moveSealedCheckTargetPackageHasMember.test @@ -0,0 +1,7 @@ +{ + "mainFile": "A/src/sealedFirst/SealedHierarchyPartA.kt", + "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", + "targetPackage": "sealedSecond", + "targetSourceRoot": "A/src", + "withRuntime": "false" +} diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/A/A.iml new file mode 100644 index 00000000000..0f75d4273fc --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/A/A.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..9ecbe99d9e5 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,2 @@ +package sealed + diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/B/B.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/B/B.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/B/B.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/B/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/B/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..37f43d3d211 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/B/src/sealed/SealedHierarchy.kt @@ -0,0 +1,4 @@ +package sealed + +sealed interface SealedInterfaceA +sealed class HierarchyClassA: SealedInterfaceA, SealedInterfaceB \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/B/src/sealed/SealedInterfaceB.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/B/src/sealed/SealedInterfaceB.kt new file mode 100644 index 00000000000..458be202c44 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/after/B/src/sealed/SealedInterfaceB.kt @@ -0,0 +1,3 @@ +package sealed + +sealed interface SealedInterfaceB \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/A/A.iml new file mode 100644 index 00000000000..0f75d4273fc --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/A/A.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..d544504d39b --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,4 @@ +package sealed + +sealed interface SealedInterfaceA +sealed class HierarchyClassA: SealedInterfaceA, SealedInterfaceB \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/B/B.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/B/B.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/B/B.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/B/src/sealed/SealedInterfaceB.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/B/src/sealed/SealedInterfaceB.kt new file mode 100644 index 00000000000..458be202c44 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/before/B/src/sealed/SealedInterfaceB.kt @@ -0,0 +1,3 @@ +package sealed + +sealed interface SealedInterfaceB \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/moveSealedCheckTargetPackageHasMemberCrossModule.test b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/moveSealedCheckTargetPackageHasMemberCrossModule.test new file mode 100644 index 00000000000..515ff868809 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/moveSealedCheckTargetPackageHasMemberCrossModule.test @@ -0,0 +1,7 @@ +{ + "mainFile": "A/src/sealed/SealedHierarchy.kt", + "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", + "targetPackage": "sealed", + "targetSourceRoot": "B/src", + "withRuntime": "false" +} diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/after/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/after/A/A.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/after/A/A.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/after/A/src/another/HierarchyClassA.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/after/A/src/another/HierarchyClassA.kt new file mode 100644 index 00000000000..f152b317ae7 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/after/A/src/another/HierarchyClassA.kt @@ -0,0 +1,6 @@ +package another + +import sealed.SealedInterfaceA +import sealed.SealedInterfaceB + +class HierarchyClassA: SealedInterfaceA, SealedInterfaceB \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/after/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/after/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..fa0ed5cda51 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/after/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,5 @@ +package sealed + +sealed interface SealedInterfaceA +sealed interface SealedInterfaceB + diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/before/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/before/A/A.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/before/A/A.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/before/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/before/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..798239246e1 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/before/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,6 @@ +package sealed + +sealed interface SealedInterfaceA +sealed interface SealedInterfaceB + +class HierarchyClassA: SealedInterfaceA, SealedInterfaceB \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/conflicts.txt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/conflicts.txt new file mode 100644 index 00000000000..89613a4e1ab --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/conflicts.txt @@ -0,0 +1 @@ +Sealed hierarchy of 'HierarchyClassA' would be split. None of its members reside in the package 'another' of module 'A': [sealed.HierarchyClassA, sealed.SealedInterfaceA, sealed.SealedInterfaceB]. \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/moveSealedCheckTargetPackageHasNoMembers.test b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/moveSealedCheckTargetPackageHasNoMembers.test new file mode 100644 index 00000000000..2f5a59e2ead --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/moveSealedCheckTargetPackageHasNoMembers.test @@ -0,0 +1,7 @@ +{ + "mainFile": "A/src/sealed/SealedHierarchy.kt", + "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", + "targetPackage": "another", + "targetSourceRoot": "A/src", + "withRuntime": "false" +} diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/A/A.iml new file mode 100644 index 00000000000..0f75d4273fc --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/A/A.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..bca8b5431e7 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,5 @@ +package sealed + +sealed interface SealedInterfaceB + +class HierarchyClassA: SealedInterfaceA, SealedInterfaceB \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/B/B.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/B/B.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/B/B.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/B/src/sealed/HelloGitEmptyDir.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/B/src/sealed/HelloGitEmptyDir.kt new file mode 100644 index 00000000000..6c223bfa79a --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/B/src/sealed/HelloGitEmptyDir.kt @@ -0,0 +1,3 @@ +package sealed + +interface HelloGitEmptyDir \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/B/src/sealed/SealedInterfaceA.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/B/src/sealed/SealedInterfaceA.kt new file mode 100644 index 00000000000..25d98326be8 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/after/B/src/sealed/SealedInterfaceA.kt @@ -0,0 +1,3 @@ +package sealed + +sealed interface SealedInterfaceA \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/A/A.iml new file mode 100644 index 00000000000..0f75d4273fc --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/A/A.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..3687f3e32c4 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,6 @@ +package sealed + +sealed interface SealedInterfaceA +sealed interface SealedInterfaceB + +class HierarchyClassA: SealedInterfaceA, SealedInterfaceB \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/B/B.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/B/B.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/B/B.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/B/src/sealed/HelloGitEmptyDir.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/B/src/sealed/HelloGitEmptyDir.kt new file mode 100644 index 00000000000..6c223bfa79a --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/before/B/src/sealed/HelloGitEmptyDir.kt @@ -0,0 +1,3 @@ +package sealed + +interface HelloGitEmptyDir \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/conflicts.txt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/conflicts.txt new file mode 100644 index 00000000000..9660cc2b94c --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/conflicts.txt @@ -0,0 +1 @@ +Sealed hierarchy of 'SealedInterfaceA' would be split. None of its members reside in the package 'sealed' of module 'B': [sealed.SealedInterfaceA, sealed.HierarchyClassA, sealed.SealedInterfaceB]. \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/moveSealedCheckTargetPackageHasNoMembersCrossModule.test b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/moveSealedCheckTargetPackageHasNoMembersCrossModule.test new file mode 100644 index 00000000000..515ff868809 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/moveSealedCheckTargetPackageHasNoMembersCrossModule.test @@ -0,0 +1,7 @@ +{ + "mainFile": "A/src/sealed/SealedHierarchy.kt", + "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", + "targetPackage": "sealed", + "targetSourceRoot": "B/src", + "withRuntime": "false" +} diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/A/A.iml new file mode 100644 index 00000000000..0f75d4273fc --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/A/A.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..16a1c95a13f --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,17 @@ +package sealed + +sealed interface SealedInterfaceB +sealed interface SealedInterfaceC +sealed interface SealedInterfaceD: InterfaceI, SealedInterfaceA, SealedInterfaceB, SealedInterfaceC +interface InterfaceE: SealedInterfaceD +sealed interface SealedInterfaceF: InterfaceE +sealed interface SealedInterfaceG +interface InterfaceH: InterfaceE +interface InterfaceI + +class ClassA: InterfaceE +class ClassC +sealed class SealedClassB: SealedInterfaceB, SealedInterfaceC, ClassC() +class ClassD: SealedClassB() +sealed class SealedClassE: SealedClassB(), SealedInterfaceG +class ClassF: ClassD() diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/B/B.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/B/B.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/B/B.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/B/src/sealed/HelloGitEmptyDir.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/B/src/sealed/HelloGitEmptyDir.kt new file mode 100644 index 00000000000..6c223bfa79a --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/B/src/sealed/HelloGitEmptyDir.kt @@ -0,0 +1,3 @@ +package sealed + +interface HelloGitEmptyDir \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/B/src/sealed/SealedInterfaceA.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/B/src/sealed/SealedInterfaceA.kt new file mode 100644 index 00000000000..25d98326be8 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/after/B/src/sealed/SealedInterfaceA.kt @@ -0,0 +1,3 @@ +package sealed + +sealed interface SealedInterfaceA \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/A/A.iml new file mode 100644 index 00000000000..0f75d4273fc --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/A/A.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..4f49ff52dcb --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,18 @@ +package sealed + +sealed interface SealedInterfaceA +sealed interface SealedInterfaceB +sealed interface SealedInterfaceC +sealed interface SealedInterfaceD: InterfaceI, SealedInterfaceA, SealedInterfaceB, SealedInterfaceC +interface InterfaceE: SealedInterfaceD +sealed interface SealedInterfaceF: InterfaceE +sealed interface SealedInterfaceG +interface InterfaceH: InterfaceE +interface InterfaceI + +class ClassA: InterfaceE +class ClassC +sealed class SealedClassB: SealedInterfaceB, SealedInterfaceC, ClassC() +class ClassD: SealedClassB() +sealed class SealedClassE: SealedClassB(), SealedInterfaceG +class ClassF: ClassD() diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/B/B.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/B/B.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/B/B.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/B/src/sealed/HelloGitEmptyDir.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/B/src/sealed/HelloGitEmptyDir.kt new file mode 100644 index 00000000000..6c223bfa79a --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/before/B/src/sealed/HelloGitEmptyDir.kt @@ -0,0 +1,3 @@ +package sealed + +interface HelloGitEmptyDir \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/conflicts.txt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/conflicts.txt new file mode 100644 index 00000000000..b99198f703b --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/conflicts.txt @@ -0,0 +1 @@ +Sealed hierarchy of 'SealedInterfaceA' would be split. None of its members reside in the package 'sealed' of module 'B': [sealed.SealedInterfaceA, sealed.SealedInterfaceD, sealed.SealedInterfaceB, sealed.SealedClassB, sealed.SealedInterfaceC, sealed.ClassD, sealed.SealedClassE, sealed.SealedInterfaceG, sealed.InterfaceE]. \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig.test b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig.test new file mode 100644 index 00000000000..515ff868809 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig.test @@ -0,0 +1,7 @@ +{ + "mainFile": "A/src/sealed/SealedHierarchy.kt", + "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", + "targetPackage": "sealed", + "targetSourceRoot": "B/src", + "withRuntime": "false" +} diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/after/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/after/A/A.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/after/A/A.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/after/A/src/sealed/HierarchyClassA.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/after/A/src/sealed/HierarchyClassA.kt new file mode 100644 index 00000000000..e5f691f0282 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/after/A/src/sealed/HierarchyClassA.kt @@ -0,0 +1,3 @@ +package sealed + +class HierarchyClassA: SealedInterfaceA, SealedInterfaceB \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/after/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/after/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..fa0ed5cda51 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/after/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,5 @@ +package sealed + +sealed interface SealedInterfaceA +sealed interface SealedInterfaceB + diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/before/A/A.iml b/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/before/A/A.iml new file mode 100644 index 00000000000..c90834f2d60 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/before/A/A.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/before/A/src/sealed/SealedHierarchy.kt b/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/before/A/src/sealed/SealedHierarchy.kt new file mode 100644 index 00000000000..798239246e1 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/before/A/src/sealed/SealedHierarchy.kt @@ -0,0 +1,6 @@ +package sealed + +sealed interface SealedInterfaceA +sealed interface SealedInterfaceB + +class HierarchyClassA: SealedInterfaceA, SealedInterfaceB \ No newline at end of file diff --git a/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/moveSealedCheckWithinPackage.test b/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/moveSealedCheckWithinPackage.test new file mode 100644 index 00000000000..7dbe39f65a2 --- /dev/null +++ b/idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/moveSealedCheckWithinPackage.test @@ -0,0 +1,7 @@ +{ + "mainFile": "A/src/sealed/SealedHierarchy.kt", + "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", + "targetPackage": "sealed", + "targetSourceRoot": "A/src/sealed", + "withRuntime": "false" +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java index 65839a8e016..c340d3b81af 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java @@ -644,16 +644,6 @@ public class MoveTestGenerated extends AbstractMoveTest { runTest("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithAllSubclasses/sealedClassWithAllSubclasses.test"); } - @TestMetadata("kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/sealedClassWithSkippedSubclasses.test") - public void testKotlin_moveTopLevelDeclarations_misc_sealedClassWithSkippedSubclasses_SealedClassWithSkippedSubclasses() throws Exception { - runTest("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedClassWithSkippedSubclasses/sealedClassWithSkippedSubclasses.test"); - } - - @TestMetadata("kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/sealedSubclassWithSkippedRoot.test") - public void testKotlin_moveTopLevelDeclarations_misc_sealedSubclassWithSkippedRoot_SealedSubclassWithSkippedRoot() throws Exception { - runTest("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/sealedSubclassWithSkippedRoot/sealedSubclassWithSkippedRoot.test"); - } - @TestMetadata("kotlin/moveTopLevelDeclarations/misc/selfReferences/selfReferences.test") public void testKotlin_moveTopLevelDeclarations_misc_selfReferences_SelfReferences() throws Exception { runTest("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/selfReferences/selfReferences.test"); @@ -779,11 +769,6 @@ public class MoveTestGenerated extends AbstractMoveTest { runTest("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/movePropertyToPackage/movePropertyToPackage.test"); } - @TestMetadata("kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/moveSealedClassWithNestedImplsToAnotherPackage.test") - public void testKotlin_moveTopLevelDeclarations_moveSealedClassWithImplsToAnotherPackage_MoveSealedClassWithNestedImplsToAnotherPackage() throws Exception { - runTest("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithImplsToAnotherPackage/moveSealedClassWithNestedImplsToAnotherPackage.test"); - } - @TestMetadata("kotlin/moveTopLevelDeclarations/moveSealedClassWithNestedImplsToAnotherPackage/moveSealedClassWithNestedImplsToAnotherPackage.test") public void testKotlin_moveTopLevelDeclarations_moveSealedClassWithNestedImplsToAnotherPackage_MoveSealedClassWithNestedImplsToAnotherPackage() throws Exception { runTest("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveSealedClassWithNestedImplsToAnotherPackage/moveSealedClassWithNestedImplsToAnotherPackage.test"); diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MultiModuleMoveTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MultiModuleMoveTestGenerated.java index d640378a8a8..416498e3778 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MultiModuleMoveTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MultiModuleMoveTestGenerated.java @@ -89,6 +89,61 @@ public class MultiModuleMoveTestGenerated extends AbstractMultiModuleMoveTest { runTest("idea/testData/refactoring/moveMultiModule/moveRefToLibTypeAliasImplementingLibExpectClass/moveRefToLibTypeAliasImplementingLibExpectClass.test"); } + @TestMetadata("moveSealedCheckEntireHierarchy/moveSealedCheckEntireHierarchy.test") + public void testMoveSealedCheckEntireHierarchy_MoveSealedCheckEntireHierarchy() throws Exception { + runTest("idea/testData/refactoring/moveMultiModule/moveSealedCheckEntireHierarchy/moveSealedCheckEntireHierarchy.test"); + } + + @TestMetadata("moveSealedCheckNotMember/moveSealedCheckNotMember.test") + public void testMoveSealedCheckNotMember_MoveSealedCheckNotMember() throws Exception { + runTest("idea/testData/refactoring/moveMultiModule/moveSealedCheckNotMember/moveSealedCheckNotMember.test"); + } + + @TestMetadata("moveSealedCheckOriginalPackageHasMember/moveSealedCheckOriginalPackageHasMember.test") + public void testMoveSealedCheckOriginalPackageHasMember_MoveSealedCheckOriginalPackageHasMember() throws Exception { + runTest("idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMember/moveSealedCheckOriginalPackageHasMember.test"); + } + + @TestMetadata("moveSealedCheckOriginalPackageHasMemberCrossModule/moveSealedCheckOriginalPackageHasMemberCrossModule.test") + public void testMoveSealedCheckOriginalPackageHasMemberCrossModule_MoveSealedCheckOriginalPackageHasMemberCrossModule() throws Exception { + runTest("idea/testData/refactoring/moveMultiModule/moveSealedCheckOriginalPackageHasMemberCrossModule/moveSealedCheckOriginalPackageHasMemberCrossModule.test"); + } + + @TestMetadata("moveSealedCheckSingleSealed/moveSealedCheckSingleSealed.test") + public void testMoveSealedCheckSingleSealed_MoveSealedCheckSingleSealed() throws Exception { + runTest("idea/testData/refactoring/moveMultiModule/moveSealedCheckSingleSealed/moveSealedCheckSingleSealed.test"); + } + + @TestMetadata("moveSealedCheckTargetPackageHasMember/moveSealedCheckTargetPackageHasMember.test") + public void testMoveSealedCheckTargetPackageHasMember_MoveSealedCheckTargetPackageHasMember() throws Exception { + runTest("idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMember/moveSealedCheckTargetPackageHasMember.test"); + } + + @TestMetadata("moveSealedCheckTargetPackageHasMemberCrossModule/moveSealedCheckTargetPackageHasMemberCrossModule.test") + public void testMoveSealedCheckTargetPackageHasMemberCrossModule_MoveSealedCheckTargetPackageHasMemberCrossModule() throws Exception { + runTest("idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasMemberCrossModule/moveSealedCheckTargetPackageHasMemberCrossModule.test"); + } + + @TestMetadata("moveSealedCheckTargetPackageHasNoMembers/moveSealedCheckTargetPackageHasNoMembers.test") + public void testMoveSealedCheckTargetPackageHasNoMembers_MoveSealedCheckTargetPackageHasNoMembers() throws Exception { + runTest("idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembers/moveSealedCheckTargetPackageHasNoMembers.test"); + } + + @TestMetadata("moveSealedCheckTargetPackageHasNoMembersCrossModule/moveSealedCheckTargetPackageHasNoMembersCrossModule.test") + public void testMoveSealedCheckTargetPackageHasNoMembersCrossModule_MoveSealedCheckTargetPackageHasNoMembersCrossModule() throws Exception { + runTest("idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModule/moveSealedCheckTargetPackageHasNoMembersCrossModule.test"); + } + + @TestMetadata("moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig.test") + public void testMoveSealedCheckTargetPackageHasNoMembersCrossModuleBig_MoveSealedCheckTargetPackageHasNoMembersCrossModuleBig() throws Exception { + runTest("idea/testData/refactoring/moveMultiModule/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig/moveSealedCheckTargetPackageHasNoMembersCrossModuleBig.test"); + } + + @TestMetadata("moveSealedCheckWithinPackage/moveSealedCheckWithinPackage.test") + public void testMoveSealedCheckWithinPackage_MoveSealedCheckWithinPackage() throws Exception { + runTest("idea/testData/refactoring/moveMultiModule/moveSealedCheckWithinPackage/moveSealedCheckWithinPackage.test"); + } + @TestMetadata("moveToModuleWithoutLibConflict/moveToModuleWithoutLibConflict.test") public void testMoveToModuleWithoutLibConflict_MoveToModuleWithoutLibConflict() throws Exception { runTest("idea/testData/refactoring/moveMultiModule/moveToModuleWithoutLibConflict/moveToModuleWithoutLibConflict.test");