提交 22e72644 编写于 作者: M Mikhail Glukhikh

[FIR] Use all implicit receivers for del. constructors, not just one

上级 535b4434
......@@ -4,8 +4,8 @@ open class Base {
class Derived : Base() {
inner class InnerDerived : Inner() {
inner class VeryInner : <!UNRESOLVED_REFERENCE!>Inner<!>() {
inner class VeryVeryInner : <!UNRESOLVED_REFERENCE!>Inner<!>()
inner class VeryInner : Inner() {
inner class VeryVeryInner : Inner()
}
}
}
......
......@@ -24,12 +24,12 @@ FILE: innerClassHierarchy.kt
public final inner class VeryInner : R|Base.Inner| {
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 constructor(): R|Derived.InnerDerived.VeryInner.VeryVeryInner| {
super<R|Base.Inner|>()
this@R|/Derived|.super<R|Base.Inner|>()
}
}
......
......@@ -208,11 +208,10 @@ class FirTowerResolverSession internal constructor(
val scope = constructorClassSymbol.fir.unsubstitutedScope(session, components.scopeSession)
if (constructorClassSymbol is FirRegularClassSymbol && constructorClassSymbol.fir.isInner) {
// Search for inner constructors only
// 1 because we search for inner constructor in outer class
implicitReceiversUsableAsValues.getOrNull(1)?.let { (implicitReceiverValue) ->
for ((implicitReceiverValue, depth) in implicitReceiversUsableAsValues.drop(1)) {
processLevel(
implicitReceiverValue.toMemberScopeTowerLevel(),
info.copy(name = constructorClassSymbol.fir.name), TowerGroup.Member
info.copy(name = constructorClassSymbol.fir.name), TowerGroup.Implicit(depth)
)
}
} else {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册