ensure that a JetEnumEntry is equivalent to a KotlinLightEnumConstant
#KT-5057 Fixed
This commit is contained in:
@@ -79,7 +79,7 @@ public open class JetClass : JetClassOrObject {
|
||||
return false
|
||||
}
|
||||
|
||||
private fun getQualifiedName(): String? {
|
||||
protected fun getQualifiedName(): String? {
|
||||
val stub = getStub()
|
||||
if (stub != null) {
|
||||
val fqName = stub.getFqName()
|
||||
|
||||
@@ -17,11 +17,16 @@
|
||||
package org.jetbrains.kotlin.psi;
|
||||
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiEnumConstant;
|
||||
import com.intellij.psi.PsiField;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.psi.stubs.KotlinClassStub;
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes;
|
||||
|
||||
@@ -79,4 +84,22 @@ public class JetEnumEntry extends JetClass {
|
||||
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
|
||||
return visitor.visitEnumEntry(this, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEquivalentTo(@Nullable PsiElement another) {
|
||||
if (another instanceof PsiEnumConstant) {
|
||||
PsiEnumConstant enumConstant = (PsiEnumConstant) another;
|
||||
PsiClass containingClass = enumConstant.getContainingClass();
|
||||
if (containingClass != null) {
|
||||
String containingClassQName = containingClass.getQualifiedName();
|
||||
if (containingClassQName != null && enumConstant.getName() != null) {
|
||||
String theirFQName = containingClassQName + "." + enumConstant.getName();
|
||||
if (theirFQName.equals(getQualifiedName())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.isEquivalentTo(another);
|
||||
}
|
||||
}
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package testing
|
||||
|
||||
enum class E {
|
||||
BAR
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package testing;
|
||||
|
||||
class JavaClient {
|
||||
E e = E.BAR;
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package testing
|
||||
|
||||
enum class E {
|
||||
FOO
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package testing;
|
||||
|
||||
class JavaClient {
|
||||
E e = E.FOO;
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"type": "KOTLIN_CLASS",
|
||||
"classId": "testing/E.FOO",
|
||||
"newName": "BAR"
|
||||
}
|
||||
@@ -257,6 +257,12 @@ public class RenameTestGenerated extends AbstractRenameTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("renameKotlinEnumEntry/renameKotlinEnumEntry.test")
|
||||
public void testRenameKotlinEnumEntry_RenameKotlinEnumEntry() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/rename/renameKotlinEnumEntry/renameKotlinEnumEntry.test");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("renameKotlinFunctionInEnum/renameKotlinFunctionInEnum.test")
|
||||
public void testRenameKotlinFunctionInEnum_RenameKotlinFunctionInEnum() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/rename/renameKotlinFunctionInEnum/renameKotlinFunctionInEnum.test");
|
||||
|
||||
Reference in New Issue
Block a user