From 8fdd8179b96d68123eeb87a77882ae29d6a2be66 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 13 Jan 2016 16:37:19 +0100 Subject: [PATCH] Workaround for KtEnumEntrySuperclassReferenceExpression which implements KtSimpleNameExpression in a weird way and can break Move refactoring (EA-75268 - assert: TextRange.) --- .../org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt | 5 +++++ .../moveFile/moveFileWithPackageRename/after/b/main.kt | 6 +++++- .../moveFile/moveFileWithPackageRename/before/a/main.kt | 6 +++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt index 2b6b3988850..6d8a09a46ad 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt @@ -98,6 +98,11 @@ fun KtElement.lazilyProcessInternalReferencesToUpdateOnPackageNameChange( val declaration = DescriptorToSourceUtilsIde.getAnyDeclaration(project, descriptor) ?: return null + // Special case for enum entry superclass references (they have empty text and don't need to be processed by the refactoring) + if (refExpr.textRange.isEmpty) { + return null + } + val isCallable = descriptor is CallableDescriptor val isExtension = isCallable && declaration.isExtensionDeclaration() diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/b/main.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/b/main.kt index 7c0d7381041..aeba881ed2c 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/b/main.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/b/main.kt @@ -35,4 +35,8 @@ var Test.TEST: String a.FOO = value FOO = value c.FOO = value - } \ No newline at end of file + } + +enum class My(val x: Int) { + FIRST(4) +} diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/main.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/main.kt index adee9e3a7d9..28d4456e89d 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/main.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/main.kt @@ -35,4 +35,8 @@ var Test.TEST: String FOO = value b.FOO = value c.FOO = value - } \ No newline at end of file + } + +enum class My(val x: Int) { + FIRST(4) +}