Minor refactoring in TowerResolver

This commit is contained in:
Alexander Udalov
2016-01-15 17:14:41 +03:00
parent b73ce68dbd
commit bb68aacee4
@@ -93,12 +93,14 @@ class TowerResolver {
return result return result
} }
private fun ScopeTower.createTowerDataList(): List<TowerData> = ArrayList<TowerData>().apply { private fun ScopeTower.createTowerDataList(): List<TowerData> {
operator fun TowerData.unaryPlus() = add(this) val result = ArrayList<TowerData>()
operator fun TowerData.unaryPlus() = result.add(this)
val localLevels = createLocalLevels() val localLevels = createLocalLevels()
val nonLocalLevels = createNonLocalLevels() val nonLocalLevels = createNonLocalLevels()
val syntheticLevel = SyntheticScopeBasedTowerLevel(this@createTowerDataList, syntheticScopes) val syntheticLevel = SyntheticScopeBasedTowerLevel(this, syntheticScopes)
// possibly there is explicit member // possibly there is explicit member
+ TowerData.Empty + TowerData.Empty
@@ -110,17 +112,17 @@ class TowerResolver {
+ TowerData.TowerLevel(localLevel) + TowerData.TowerLevel(localLevel)
} }
for (scope in lexicalScope.parentsWithSelf) { for (scope in this.lexicalScope.parentsWithSelf) {
if (scope is LexicalScope) { if (scope is LexicalScope) {
// statics // statics
if (!scope.kind.withLocalDescriptors) { if (!scope.kind.withLocalDescriptors) {
+ TowerData.TowerLevel(ScopeBasedTowerLevel(this@createTowerDataList, scope)) + TowerData.TowerLevel(ScopeBasedTowerLevel(this, scope))
} }
val implicitReceiver = scope.implicitReceiver?.value val implicitReceiver = scope.implicitReceiver?.value
if (implicitReceiver != null) { if (implicitReceiver != null) {
// members of implicit receiver or member extension for explicit receiver // members of implicit receiver or member extension for explicit receiver
+ TowerData.TowerLevel(ReceiverScopeTowerLevel(this@createTowerDataList, implicitReceiver)) + TowerData.TowerLevel(ReceiverScopeTowerLevel(this, implicitReceiver))
// synthetic members // synthetic members
+ TowerData.BothTowerLevelAndImplicitReceiver(syntheticLevel, implicitReceiver) + TowerData.BothTowerLevelAndImplicitReceiver(syntheticLevel, implicitReceiver)
@@ -141,9 +143,11 @@ class TowerResolver {
} }
else { else {
// functions with no receiver or extension for explicit receiver // functions with no receiver or extension for explicit receiver
+ TowerData.TowerLevel(ImportingScopeBasedTowerLevel(this@createTowerDataList, scope as ImportingScope)) + TowerData.TowerLevel(ImportingScopeBasedTowerLevel(this, scope as ImportingScope))
} }
} }
return result
} }
private fun <C> run( private fun <C> run(