[FIR] Use all implicit receivers for del. constructors, not just one
This commit is contained in:
+2
-2
@@ -4,8 +4,8 @@ open class Base {
|
|||||||
|
|
||||||
class Derived : Base() {
|
class Derived : Base() {
|
||||||
inner class InnerDerived : Inner() {
|
inner class InnerDerived : Inner() {
|
||||||
inner class VeryInner : <!UNRESOLVED_REFERENCE!>Inner<!>() {
|
inner class VeryInner : Inner() {
|
||||||
inner class VeryVeryInner : <!UNRESOLVED_REFERENCE!>Inner<!>()
|
inner class VeryVeryInner : Inner()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -24,12 +24,12 @@ FILE: innerClassHierarchy.kt
|
|||||||
|
|
||||||
public final inner class VeryInner : R|Base.Inner| {
|
public final inner class VeryInner : R|Base.Inner| {
|
||||||
public constructor(): R|Derived.InnerDerived.VeryInner| {
|
public constructor(): R|Derived.InnerDerived.VeryInner| {
|
||||||
super<R|Base.Inner|>()
|
this@R|/Derived|.super<R|Base.Inner|>()
|
||||||
}
|
}
|
||||||
|
|
||||||
public final inner class VeryVeryInner : R|Base.Inner| {
|
public final inner class VeryVeryInner : R|Base.Inner| {
|
||||||
public constructor(): R|Derived.InnerDerived.VeryInner.VeryVeryInner| {
|
public constructor(): R|Derived.InnerDerived.VeryInner.VeryVeryInner| {
|
||||||
super<R|Base.Inner|>()
|
this@R|/Derived|.super<R|Base.Inner|>()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-3
@@ -208,11 +208,10 @@ class FirTowerResolverSession internal constructor(
|
|||||||
val scope = constructorClassSymbol.fir.unsubstitutedScope(session, components.scopeSession)
|
val scope = constructorClassSymbol.fir.unsubstitutedScope(session, components.scopeSession)
|
||||||
if (constructorClassSymbol is FirRegularClassSymbol && constructorClassSymbol.fir.isInner) {
|
if (constructorClassSymbol is FirRegularClassSymbol && constructorClassSymbol.fir.isInner) {
|
||||||
// Search for inner constructors only
|
// Search for inner constructors only
|
||||||
// 1 because we search for inner constructor in outer class
|
for ((implicitReceiverValue, depth) in implicitReceiversUsableAsValues.drop(1)) {
|
||||||
implicitReceiversUsableAsValues.getOrNull(1)?.let { (implicitReceiverValue) ->
|
|
||||||
processLevel(
|
processLevel(
|
||||||
implicitReceiverValue.toMemberScopeTowerLevel(),
|
implicitReceiverValue.toMemberScopeTowerLevel(),
|
||||||
info.copy(name = constructorClassSymbol.fir.name), TowerGroup.Member
|
info.copy(name = constructorClassSymbol.fir.name), TowerGroup.Implicit(depth)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user