Unwrap light elements before getting FqName

This commit is contained in:
Alexey Sedunov
2014-03-18 21:20:29 +04:00
parent acaa900ee9
commit 05d93df8b8
3 changed files with 28 additions and 26 deletions
@@ -49,14 +49,11 @@ import com.intellij.psi.PsiParameterList
import com.intellij.psi.PsiParameter
import org.jetbrains.jet.lang.psi.JetQualifiedExpression
import org.jetbrains.jet.lang.psi.JetUserType
import org.jetbrains.jet.lang.resolve.name.FqName
import org.jetbrains.jet.lang.psi.JetCallExpression
import com.intellij.psi.PsiPackage
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiMember
import org.jetbrains.jet.lang.psi.JetNamedDeclaration
import com.intellij.psi.JavaDirectoryService
import com.intellij.psi.PsiDirectory
import org.jetbrains.jet.lang.psi.JetModifierListOwner
public fun PsiElement.getParentByTypesAndPredicate<T: PsiElement>(
strict : Boolean = false, vararg parentClasses : Class<T>, predicate: (T) -> Boolean
@@ -265,20 +262,4 @@ public fun JetSimpleNameExpression.getOutermostNonInterleavingQualifiedElement()
}
}
/**
* Returns FqName for given declaration (either Java or Kotlin)
*/
public fun PsiElement.getFqName(): FqName? {
return when (this) {
is PsiPackage -> FqName(getQualifiedName())
is PsiClass -> getQualifiedName()?.let { FqName(it) }
is PsiMember -> getName()?.let { name ->
val prefix = getContainingClass()?.getQualifiedName()
FqName(if (prefix != null) "$prefix.$name" else name)
}
is JetNamedDeclaration -> JetPsiUtil.getFQName(this)
else -> null
}
}
public fun PsiDirectory.getPackage(): PsiPackage? = JavaDirectoryService.getInstance()!!.getPackage(this)