mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[groovy] fix project leaking via intention (IDEA-175950)
This commit is contained in:
+5
-8
@@ -3,25 +3,19 @@ package org.jetbrains.plugins.groovy.intentions.conversions
|
||||
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.SmartPsiElementPointer
|
||||
import com.intellij.psi.util.createSmartPointer
|
||||
import com.intellij.refactoring.RefactoringFactory
|
||||
import com.intellij.util.Consumer
|
||||
import org.jetbrains.plugins.groovy.intentions.GroovyIntentionsBundle.message
|
||||
import org.jetbrains.plugins.groovy.intentions.base.Intention
|
||||
import org.jetbrains.plugins.groovy.intentions.base.PsiElementPredicate
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition
|
||||
|
||||
class RenameClassToFileNameIntention : Intention() {
|
||||
|
||||
private lateinit var myClassPointer: SmartPsiElementPointer<GrTypeDefinition>
|
||||
private lateinit var myFileName: String
|
||||
|
||||
override fun getElementPredicate(): PsiElementPredicate = ClassNameDiffersFromFileNamePredicate(
|
||||
classConsumer = Consumer {
|
||||
myClassPointer = it.createSmartPointer()
|
||||
},
|
||||
fileNameConsumer = Consumer { fileName ->
|
||||
myFileName = fileName
|
||||
}
|
||||
@@ -34,7 +28,10 @@ class RenameClassToFileNameIntention : Intention() {
|
||||
override fun startInWriteAction(): Boolean = false
|
||||
|
||||
override fun processIntention(element: PsiElement, project: Project, editor: Editor?) {
|
||||
val clazz = myClassPointer.element ?: return
|
||||
var clazz: PsiClass? = null
|
||||
val predicate = ClassNameDiffersFromFileNamePredicate(classConsumer = Consumer { clazz = it })
|
||||
if (!predicate.satisfiedBy(element)) return
|
||||
assert(clazz != null)
|
||||
RefactoringFactory.getInstance(project).createRename(clazz, myFileName).run()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user