Minor: Use handler autodetection in some rename tests
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"type": "SHORT_COMPANION_REFERENCE",
|
"type": "AUTO_DETECT",
|
||||||
"mainFile": "test.kt",
|
"mainFile": "test.kt",
|
||||||
"newName": "Bar"
|
"newName": "Bar"
|
||||||
}
|
}
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"type": "SYNTHETIC_PROPERTY",
|
"type": "AUTO_DETECT",
|
||||||
"mainFile": "test.kt",
|
"mainFile": "test.kt",
|
||||||
"newName": "isProp2"
|
"newName": "isProp2"
|
||||||
}
|
}
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"type": "SYNTHETIC_PROPERTY",
|
"type": "AUTO_DETECT",
|
||||||
"mainFile": "test.kt",
|
"mainFile": "test.kt",
|
||||||
"newName": "prop2"
|
"newName": "prop2"
|
||||||
}
|
}
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"type": "SYNTHETIC_PROPERTY",
|
"type": "AUTO_DETECT",
|
||||||
"mainFile": "test.kt",
|
"mainFile": "test.kt",
|
||||||
"newName": "prop2"
|
"newName": "prop2"
|
||||||
}
|
}
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"type": "SYNTHETIC_PROPERTY",
|
"type": "AUTO_DETECT",
|
||||||
"mainFile": "test.kt",
|
"mainFile": "test.kt",
|
||||||
"newName": "prop2"
|
"newName": "prop2"
|
||||||
}
|
}
|
||||||
@@ -25,7 +25,6 @@ import com.intellij.openapi.actionSystem.CommonDataKeys
|
|||||||
import com.intellij.openapi.actionSystem.DataContext
|
import com.intellij.openapi.actionSystem.DataContext
|
||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
import com.intellij.openapi.editor.EditorFactory
|
import com.intellij.openapi.editor.EditorFactory
|
||||||
import com.intellij.openapi.editor.impl.CaretImpl
|
|
||||||
import com.intellij.openapi.extensions.Extensions
|
import com.intellij.openapi.extensions.Extensions
|
||||||
import com.intellij.openapi.fileEditor.FileDocumentManager
|
import com.intellij.openapi.fileEditor.FileDocumentManager
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
@@ -42,6 +41,7 @@ import com.intellij.psi.search.GlobalSearchScope
|
|||||||
import com.intellij.refactoring.BaseRefactoringProcessor.ConflictsInTestsException
|
import com.intellij.refactoring.BaseRefactoringProcessor.ConflictsInTestsException
|
||||||
import com.intellij.refactoring.MultiFileTestCase
|
import com.intellij.refactoring.MultiFileTestCase
|
||||||
import com.intellij.refactoring.rename.PsiElementRenameHandler
|
import com.intellij.refactoring.rename.PsiElementRenameHandler
|
||||||
|
import com.intellij.refactoring.rename.RenameHandlerRegistry
|
||||||
import com.intellij.refactoring.rename.RenameProcessor
|
import com.intellij.refactoring.rename.RenameProcessor
|
||||||
import com.intellij.refactoring.rename.RenamePsiElementProcessor
|
import com.intellij.refactoring.rename.RenamePsiElementProcessor
|
||||||
import com.intellij.refactoring.rename.naming.AutomaticRenamerFactory
|
import com.intellij.refactoring.rename.naming.AutomaticRenamerFactory
|
||||||
@@ -49,7 +49,6 @@ import com.intellij.refactoring.util.CommonRefactoringUtil.RefactoringErrorHintE
|
|||||||
import com.intellij.testFramework.PlatformTestUtil
|
import com.intellij.testFramework.PlatformTestUtil
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeFullyAndGetResult
|
import org.jetbrains.kotlin.idea.caches.resolve.analyzeFullyAndGetResult
|
||||||
import org.jetbrains.kotlin.idea.jsonUtils.getNullableString
|
import org.jetbrains.kotlin.idea.jsonUtils.getNullableString
|
||||||
import org.jetbrains.kotlin.idea.jsonUtils.getString
|
import org.jetbrains.kotlin.idea.jsonUtils.getString
|
||||||
@@ -60,14 +59,10 @@ import org.jetbrains.kotlin.idea.test.*
|
|||||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||||
import org.jetbrains.kotlin.name.*
|
import org.jetbrains.kotlin.name.*
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
|
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
|
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.findClassAcrossModuleDependencies
|
import org.jetbrains.kotlin.serialization.deserialization.findClassAcrossModuleDependencies
|
||||||
import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor
|
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@@ -81,8 +76,7 @@ private enum class RenameType {
|
|||||||
MARKED_ELEMENT,
|
MARKED_ELEMENT,
|
||||||
FILE,
|
FILE,
|
||||||
BUNDLE_PROPERTY,
|
BUNDLE_PROPERTY,
|
||||||
SYNTHETIC_PROPERTY,
|
AUTO_DETECT
|
||||||
SHORT_COMPANION_REFERENCE
|
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class AbstractRenameTest : KotlinMultiFileTestCase() {
|
abstract class AbstractRenameTest : KotlinMultiFileTestCase() {
|
||||||
@@ -128,8 +122,7 @@ abstract class AbstractRenameTest : KotlinMultiFileTestCase() {
|
|||||||
RenameType.MARKED_ELEMENT -> renameMarkedElement(renameObject, context)
|
RenameType.MARKED_ELEMENT -> renameMarkedElement(renameObject, context)
|
||||||
RenameType.FILE -> renameFile(renameObject, context)
|
RenameType.FILE -> renameFile(renameObject, context)
|
||||||
RenameType.BUNDLE_PROPERTY -> renameBundleProperty(renameObject, context)
|
RenameType.BUNDLE_PROPERTY -> renameBundleProperty(renameObject, context)
|
||||||
RenameType.SYNTHETIC_PROPERTY -> renameSyntheticProperty(renameObject, context)
|
RenameType.AUTO_DETECT -> renameWithAutoDetection(renameObject)
|
||||||
RenameType.SHORT_COMPANION_REFERENCE -> renameShortCompanionReference(renameObject, context)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hintDirective != null) {
|
if (hintDirective != null) {
|
||||||
@@ -347,7 +340,7 @@ abstract class AbstractRenameTest : KotlinMultiFileTestCase() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renameSyntheticProperty(renameParamsObject: JsonObject, context: TestContext) {
|
private fun renameWithAutoDetection(renameParamsObject: JsonObject) {
|
||||||
val mainFilePath = renameParamsObject.getString("mainFile")
|
val mainFilePath = renameParamsObject.getString("mainFile")
|
||||||
val newName = renameParamsObject.getString("newName")
|
val newName = renameParamsObject.getString("newName")
|
||||||
|
|
||||||
@@ -360,35 +353,10 @@ abstract class AbstractRenameTest : KotlinMultiFileTestCase() {
|
|||||||
val marker = doc.extractMarkerOffset(project, "/*rename*/")
|
val marker = doc.extractMarkerOffset(project, "/*rename*/")
|
||||||
assert(marker != -1)
|
assert(marker != -1)
|
||||||
|
|
||||||
val refExpr = psiFile.findElementAt(marker)!!.getNonStrictParentOfType<KtSimpleNameExpression>()!!
|
|
||||||
val descriptor = refExpr.analyze(BodyResolveMode.PARTIAL)[BindingContext.REFERENCE_TARGET, refExpr]
|
|
||||||
as SyntheticJavaPropertyDescriptor
|
|
||||||
val propertyWrapper = RenameJavaSyntheticPropertyHandler.SyntheticPropertyWrapper(psiFile.manager, descriptor)
|
|
||||||
|
|
||||||
val substitution = RenamePsiElementProcessor.forElement(propertyWrapper).substituteElementToRename(propertyWrapper, null)
|
|
||||||
|
|
||||||
runRenameProcessor(context, newName, substitution, renameParamsObject, true, true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun renameShortCompanionReference(renameParamsObject: JsonObject, context: TestContext) {
|
|
||||||
val mainFilePath = renameParamsObject.getString("mainFile")
|
|
||||||
val newName = renameParamsObject.getString("newName")
|
|
||||||
|
|
||||||
doTestCommittingDocuments { rootDir, rootAfter ->
|
|
||||||
configExtra(rootDir, renameParamsObject)
|
|
||||||
|
|
||||||
val psiFile = rootDir.findFileByRelativePath(mainFilePath)!!.toPsiFile(project)!!
|
|
||||||
|
|
||||||
val doc = PsiDocumentManager.getInstance(project).getDocument(psiFile)!!
|
|
||||||
val marker = doc.extractMarkerOffset(project, "/*rename*/")
|
|
||||||
assert(marker != -1)
|
|
||||||
|
|
||||||
val editor = EditorFactory.getInstance().createEditor(doc)
|
val editor = EditorFactory.getInstance().createEditor(doc)
|
||||||
editor.caretModel.moveToOffset(marker)
|
editor.caretModel.moveToOffset(marker)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
val handler = RenameClassByCompanionObjectShortReferenceHandler()
|
|
||||||
val dataContext = DataContext { dataId ->
|
val dataContext = DataContext { dataId ->
|
||||||
when (dataId) {
|
when (dataId) {
|
||||||
CommonDataKeys.EDITOR.name -> editor
|
CommonDataKeys.EDITOR.name -> editor
|
||||||
@@ -398,6 +366,7 @@ abstract class AbstractRenameTest : KotlinMultiFileTestCase() {
|
|||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
val handler = RenameHandlerRegistry.getInstance().getRenameHandler(dataContext)!!
|
||||||
Assert.assertTrue(handler.isAvailableOnDataContext(dataContext))
|
Assert.assertTrue(handler.isAvailableOnDataContext(dataContext))
|
||||||
handler.invoke(project, editor, psiFile, dataContext)
|
handler.invoke(project, editor, psiFile, dataContext)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user