K2: make qualifier & classifier the same tower level

#KT-65789 Fixed
#KT-38031 Fixed
This commit is contained in:
Mikhail Glukhikh
2024-03-05 11:42:15 +01:00
committed by Space Team
parent d6e67e43f9
commit 0f53ee64d6
10 changed files with 33 additions and 22 deletions
@@ -1,6 +1,6 @@
FILE: main.kt
public final fun main(): R|kotlin/Unit| {
Q|W|.R|/W.E*s|().R|kotlin/String.length|
Q|W|.<Ambiguity: E, [/W.E, /W.E.E]>#().<Unresolved name: length>#
Q|W.E|.<Unresolved name: length>#
Q|W.E|.R|/W.E.w*s|
}
@@ -1,3 +1,5 @@
// ISSUE: KT-38031
// FILE: W.java
public class W {
public static class E {
@@ -11,7 +13,7 @@ public class W {
// FILE: main.kt
fun main() {
W.E().length // ambiguity in old FE, resolved to static method in FIR
W.<!OVERLOAD_RESOLUTION_AMBIGUITY!>E<!>().<!UNRESOLVED_REFERENCE!>length<!> // ambiguity in both FIR / old FE
W.E.<!UNRESOLVED_REFERENCE!>length<!> // resolved with error to the class W.E in FIR and old FE
W.E.w // resolved to static field W.e.W in FE
}
@@ -269,7 +269,7 @@ internal open class FirTowerResolveTask(
else -> null
}
),
info, TowerGroup.Qualifier
info, TowerGroup.QualifierOrClassifier
)
}
@@ -284,7 +284,7 @@ internal open class FirTowerResolveTask(
val scope = qualifierReceiver.classifierScope() ?: return
processLevel(
scope.toScopeTowerLevel(constructorFilter = ConstructorFilter.OnlyNested), info,
TowerGroup.Classifier
TowerGroup.QualifierOrClassifier
)
}
@@ -29,9 +29,7 @@ sealed class TowerGroupKind(val index: Byte) : Comparable<TowerGroupKind> {
data object Start : TowerGroupKind(0b0)
data object Qualifier : TowerGroupKind(1)
data object Classifier : TowerGroupKind(2)
data object QualifierOrClassifier : TowerGroupKind(1)
class TopPrioritized(depth: Int) : WithDepth(3, depth)
@@ -176,9 +174,7 @@ private constructor(
val Start = kindOf(TowerGroupKind.Start)
val Qualifier = kindOf(TowerGroupKind.Qualifier)
val Classifier = kindOf(TowerGroupKind.Classifier)
val QualifierOrClassifier = kindOf(TowerGroupKind.QualifierOrClassifier)
val QualifierValue = kindOf(TowerGroupKind.QualifierValue)