FIR: Fix incorrect resolution to synthetic property by implicit receiver

When there's an explicit one

^KT-39028 Fixed
This commit is contained in:
Denis Zharkov
2020-06-10 16:24:09 +03:00
parent 293f78efe8
commit 5ab05e6e47
5 changed files with 67 additions and 3 deletions
@@ -26,9 +26,9 @@ import org.jetbrains.kotlin.fir.scopes.impl.FirExplicitSimpleImportingScope
import org.jetbrains.kotlin.fir.scopes.processClassifiersByName
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.classId
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.ConeNullability
import org.jetbrains.kotlin.fir.types.classId
import org.jetbrains.kotlin.fir.types.withNullability
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.util.OperatorNameConventions
@@ -117,11 +117,11 @@ class MemberScopeTowerLevel(
}
}
if (!forInnerConstructorDelegationCalls) {
if (!forInnerConstructorDelegationCalls && extensionReceiver == null) {
val withSynthetic = FirSyntheticPropertiesScope(session, scope)
withSynthetic.processScopeMembers { symbol ->
empty = false
output.consumeCandidate(symbol, NotNullableReceiverValue(dispatchReceiver), extensionReceiver as? ImplicitReceiverValue<*>)
output.consumeCandidate(symbol, NotNullableReceiverValue(dispatchReceiver), null)
}
}
return if (empty) ProcessorAction.NONE else ProcessorAction.NEXT