Moving more PSI modification methods to psiModificationUtils.kt
This commit is contained in:
@@ -141,44 +141,6 @@ public fun JetDeclaration.isExtensionDeclaration(): Boolean {
|
|||||||
|
|
||||||
public fun JetClassOrObject.isObjectLiteral(): Boolean = this is JetObjectDeclaration && isObjectLiteral()
|
public fun JetClassOrObject.isObjectLiteral(): Boolean = this is JetObjectDeclaration && isObjectLiteral()
|
||||||
|
|
||||||
//TODO: git rid of this method
|
|
||||||
public fun PsiElement.deleteElementAndCleanParent() {
|
|
||||||
val parent = getParent()
|
|
||||||
|
|
||||||
deleteElementWithDelimiters(this)
|
|
||||||
deleteChildlessElement(parent, this.javaClass)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete element if it doesn't contain children of a given type
|
|
||||||
private fun <T : PsiElement> deleteChildlessElement(element: PsiElement, childClass: Class<T>) {
|
|
||||||
if (PsiTreeUtil.getChildrenOfType<T>(element, childClass) == null) {
|
|
||||||
element.delete()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete given element and all the elements separating it from the neighboring elements of the same class
|
|
||||||
private fun deleteElementWithDelimiters(element: PsiElement) {
|
|
||||||
val paramBefore = PsiTreeUtil.getPrevSiblingOfType<PsiElement>(element, element.javaClass)
|
|
||||||
|
|
||||||
val from: PsiElement
|
|
||||||
val to: PsiElement
|
|
||||||
if (paramBefore != null) {
|
|
||||||
from = paramBefore.getNextSibling()
|
|
||||||
to = element
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
val paramAfter = PsiTreeUtil.getNextSiblingOfType<PsiElement>(element, element.javaClass)
|
|
||||||
|
|
||||||
from = element
|
|
||||||
to = if (paramAfter != null) paramAfter.getPrevSibling() else element
|
|
||||||
}
|
|
||||||
|
|
||||||
val parent = element.getParent()
|
|
||||||
|
|
||||||
parent.deleteChildRange(from, to)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public fun PsiElement.parameterIndex(): Int {
|
public fun PsiElement.parameterIndex(): Int {
|
||||||
val parent = getParent()
|
val parent = getParent()
|
||||||
return when {
|
return when {
|
||||||
|
|||||||
@@ -18,7 +18,9 @@ package org.jetbrains.kotlin.idea.core
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiWhiteSpace
|
import com.intellij.psi.PsiWhiteSpace
|
||||||
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
|
import org.jetbrains.kotlin.psi.psiUtil
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
|
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
|
||||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getValueArgumentsInParentheses
|
import org.jetbrains.kotlin.resolve.calls.callUtil.getValueArgumentsInParentheses
|
||||||
@@ -109,4 +111,41 @@ public fun JetBlockExpression.appendElement(element: JetElement): JetElement {
|
|||||||
rBrace.getPrevSibling()!!
|
rBrace.getPrevSibling()!!
|
||||||
}
|
}
|
||||||
return addAfter(element, anchor)!! as JetElement
|
return addAfter(element, anchor)!! as JetElement
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO: git rid of this method
|
||||||
|
public fun PsiElement.deleteElementAndCleanParent() {
|
||||||
|
val parent = getParent()
|
||||||
|
|
||||||
|
deleteElementWithDelimiters(this)
|
||||||
|
deleteChildlessElement(parent, this.javaClass)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete element if it doesn't contain children of a given type
|
||||||
|
private fun <T : PsiElement> deleteChildlessElement(element: PsiElement, childClass: Class<T>) {
|
||||||
|
if (PsiTreeUtil.getChildrenOfType<T>(element, childClass) == null) {
|
||||||
|
element.delete()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete given element and all the elements separating it from the neighboring elements of the same class
|
||||||
|
private fun deleteElementWithDelimiters(element: PsiElement) {
|
||||||
|
val paramBefore = PsiTreeUtil.getPrevSiblingOfType<PsiElement>(element, element.javaClass)
|
||||||
|
|
||||||
|
val from: PsiElement
|
||||||
|
val to: PsiElement
|
||||||
|
if (paramBefore != null) {
|
||||||
|
from = paramBefore.getNextSibling()
|
||||||
|
to = element
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
val paramAfter = PsiTreeUtil.getNextSiblingOfType<PsiElement>(element, element.javaClass)
|
||||||
|
|
||||||
|
from = element
|
||||||
|
to = if (paramAfter != null) paramAfter.getPrevSibling() else element
|
||||||
|
}
|
||||||
|
|
||||||
|
val parent = element.getParent()
|
||||||
|
|
||||||
|
parent.deleteChildRange(from, to)
|
||||||
}
|
}
|
||||||
+1
-1
@@ -42,7 +42,7 @@ import org.jetbrains.kotlin.idea.references.JetReference
|
|||||||
import org.jetbrains.kotlin.idea.search.usagesSearch.processDelegationCallConstructorUsages
|
import org.jetbrains.kotlin.idea.search.usagesSearch.processDelegationCallConstructorUsages
|
||||||
import org.jetbrains.kotlin.lexer.JetTokens
|
import org.jetbrains.kotlin.lexer.JetTokens
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.deleteElementAndCleanParent
|
import org.jetbrains.kotlin.idea.core.deleteElementAndCleanParent
|
||||||
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.BindingContext
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.idea.refactoring.safeDelete
|
|||||||
|
|
||||||
import com.intellij.refactoring.safeDelete.usageInfo.SafeDeleteReferenceSimpleDeleteUsageInfo
|
import com.intellij.refactoring.safeDelete.usageInfo.SafeDeleteReferenceSimpleDeleteUsageInfo
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.deleteElementAndCleanParent
|
import org.jetbrains.kotlin.idea.core.deleteElementAndCleanParent
|
||||||
|
|
||||||
public class SafeDeleteTypeArgumentListUsageInfo(
|
public class SafeDeleteTypeArgumentListUsageInfo(
|
||||||
typeProjection: JetTypeProjection, parameter: JetTypeParameter
|
typeProjection: JetTypeProjection, parameter: JetTypeParameter
|
||||||
|
|||||||
Reference in New Issue
Block a user