Implement parameterIndex() function

This commit is contained in:
Alexey Sedunov
2014-01-28 15:49:29 +04:00
parent e52da4fce0
commit f80fa8515a
3 changed files with 22 additions and 12 deletions
@@ -46,6 +46,9 @@ import org.jetbrains.jet.lang.psi.JetNamedFunction
import org.jetbrains.jet.lang.psi.JetProperty
import org.jetbrains.jet.lang.psi.JetCallableDeclaration
import org.jetbrains.jet.lang.psi.JetPropertyAccessor
import org.jetbrains.jet.lang.psi.JetParameter
import com.intellij.psi.PsiParameterList
import com.intellij.psi.PsiParameter
fun PsiElement.getParentByTypesAndPredicate<T: PsiElement>(
strict : Boolean = false, vararg parentClasses : Class<T>, predicate: (T) -> Boolean
@@ -197,4 +200,13 @@ fun PsiElement.deleteElementAndCleanParent() {
JetPsiUtil.deleteElementWithDelimiters(this)
[suppress("UNCHECKED_CAST")]
JetPsiUtil.deleteChildlessElement(parent, this.getClass() as Class<PsiElement>)
}
fun PsiElement.parameterIndex(): Int {
val parent = getParent()
return when {
this is JetParameter && parent is JetParameterList -> parent.getParameters().indexOf(this)
this is PsiParameter && parent is PsiParameterList -> parent.getParameterIndex(this)
else -> -1
}
}