KT-12793 Code completion doesn't suggest abstract protected extension methods

#KT-12793 Fixed
This commit is contained in:
Valentin Kipyatkov
2016-07-22 17:54:01 +03:00
parent 88ad00b0bc
commit 6ff91d1399
4 changed files with 24 additions and 1 deletions
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.descriptorUtil.isExtension
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.OverridingUtil
import org.jetbrains.kotlin.resolve.findOriginalTopMostOverriddenDescriptors
@@ -62,7 +63,8 @@ private fun DeclarationDescriptorWithVisibility.isVisible(
if (bindingContext == null || resolutionScope == null) return false
if (receiverExpression != null) {
// for extension it makes no sense to check explicit receiver because we need dispatch receiver which is implicit in this case
if (receiverExpression != null && !isExtension) {
val receiverType = bindingContext.getType(receiverExpression) ?: return false
val explicitReceiver = ExpressionReceiver.create(receiverExpression, receiverType, bindingContext)
return Visibilities.isVisible(explicitReceiver, this, from)