Fix broken isReferenceTo checking code for Android extensions

#KT-16132 Fixed
This commit is contained in:
Vyacheslav Gerasimov
2017-02-06 17:16:34 +03:00
parent 25c1828288
commit 39010ab847
29 changed files with 409 additions and 27 deletions
@@ -25,16 +25,11 @@ import org.jetbrains.kotlin.android.synthetic.androidIdToName
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
import org.jetbrains.kotlin.plugin.references.SimpleNameReferenceExtension
import org.jetbrains.kotlin.psi.KtDotQualifiedExpression
import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.kotlin.psi.KtPsiFactory
class AndroidSimpleNameReferenceExtension : SimpleNameReferenceExtension {
override fun isReferenceTo(reference: KtSimpleNameReference, element: PsiElement) = when {
element is ValueResourceElementWrapper && AndroidResourceUtil.isIdDeclaration(element) -> true
isLayoutPackageIdentifier(reference) -> true
else -> false
}
private fun isLayoutPackageIdentifier(reference: KtSimpleNameReference): Boolean {
val probablyVariant = reference.element?.parent as? KtDotQualifiedExpression ?: return false
val probablyKAS = probablyVariant.receiverExpression as? KtDotQualifiedExpression ?: return false