Reuse Java safe delete for Kotlin classes and objects
This commit is contained in:
@@ -372,14 +372,13 @@ public class JetPsiUtil {
|
||||
public static void deleteClass(@NotNull JetClassOrObject clazz) {
|
||||
CheckUtil.checkWritable(clazz);
|
||||
JetFile file = (JetFile) clazz.getContainingFile();
|
||||
List<JetDeclaration> declarations = file.getDeclarations();
|
||||
if (declarations.size() == 1) {
|
||||
file.delete();
|
||||
}
|
||||
else {
|
||||
if (isLocal(clazz) || file.getDeclarations().size() > 1) {
|
||||
PsiElement parent = clazz.getParent();
|
||||
CodeEditUtil.removeChild(parent.getNode(), clazz.getNode());
|
||||
}
|
||||
else {
|
||||
file.delete();
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -39,6 +39,8 @@ import com.intellij.psi.search.SearchScope
|
||||
import com.intellij.psi.search.PsiSearchScopeUtil
|
||||
import org.jetbrains.jet.lang.psi.JetClassBody
|
||||
import org.jetbrains.jet.lang.psi.JetParameterList
|
||||
import org.jetbrains.jet.lang.psi.JetNamedDeclaration
|
||||
import com.intellij.psi.PsiNamedElement
|
||||
|
||||
fun PsiElement.getParentByTypesAndPredicate<T: PsiElement>(
|
||||
strict : Boolean = false, vararg parentClasses : Class<T>, predicate: (T) -> Boolean
|
||||
@@ -170,4 +172,7 @@ fun JetDeclaration.isOverridable(): Boolean {
|
||||
|
||||
return klass.isTrait() ||
|
||||
hasModifier(JetTokens.ABSTRACT_KEYWORD) || hasModifier(JetTokens.OPEN_KEYWORD) || hasModifier(JetTokens.OVERRIDE_KEYWORD)
|
||||
}
|
||||
}
|
||||
|
||||
val PsiElement.namedNavigationElement: PsiNamedElement?
|
||||
get() = getNavigationElement()?.getParentByType(javaClass<PsiNamedElement>())
|
||||
Reference in New Issue
Block a user