[FE 1.0] Take into account import aliases during hidden member resolution

This commit is contained in:
Victor Petukhov
2021-11-17 13:11:43 +03:00
parent c2de8712f2
commit 42805db989
13 changed files with 57 additions and 2 deletions
@@ -39,6 +39,8 @@ interface ImplicitScopeTower {
fun getImplicitReceiver(scope: LexicalScope): ReceiverValueWithSmartCastInfo?
fun getNameForGivenImportAlias(name: Name): Name?
val dynamicScope: MemberScope
val syntheticScopes: SyntheticScopes
@@ -358,7 +358,8 @@ internal class HidesMembersTowerLevel(scopeTower: ImplicitScopeTower) : Abstract
extensionReceiver: ReceiverValueWithSmartCastInfo?,
collectCandidates: LexicalScope.(Name, LookupLocation) -> Collection<CallableDescriptor>
): Collection<CandidateWithBoundDispatchReceiver> {
if (extensionReceiver == null || name !in HIDES_MEMBERS_NAME_LIST) return emptyList()
if (extensionReceiver == null) return emptyList()
if (name !in HIDES_MEMBERS_NAME_LIST && scopeTower.getNameForGivenImportAlias(name) !in HIDES_MEMBERS_NAME_LIST) return emptyList()
return scopeTower.lexicalScope.collectCandidates(name, location).filter {
it.extensionReceiverParameter != null && it.hasHidesMembersAnnotation()
@@ -107,7 +107,8 @@ class TowerResolver {
private val useOrder: Boolean,
private val name: Name
) {
private val isNameForHidesMember = name in HIDES_MEMBERS_NAME_LIST
private val isNameForHidesMember =
name in HIDES_MEMBERS_NAME_LIST || implicitScopeTower.getNameForGivenImportAlias(name) in HIDES_MEMBERS_NAME_LIST
private val skippedDataForLookup = mutableListOf<TowerData>()
private val localLevels: Collection<ScopeTowerLevel> by lazy(LazyThreadSafetyMode.NONE) {