K2: make qualifier & classifier the same tower level
#KT-65789 Fixed #KT-38031 Fixed
This commit is contained in:
committed by
Space Team
parent
d6e67e43f9
commit
0f53ee64d6
+1
-1
@@ -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
|
||||
}
|
||||
|
||||
+2
-2
@@ -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)
|
||||
|
||||
|
||||
+2
-2
@@ -13,7 +13,7 @@ enum class SomeClass {
|
||||
}
|
||||
}
|
||||
|
||||
val resultValues = SomeClass.values()
|
||||
val resultValuesRef = SomeClass::values
|
||||
val resultValues = SomeClass.<!OVERLOAD_RESOLUTION_AMBIGUITY!>values<!>()
|
||||
val resultValuesRef = SomeClass::<!OVERLOAD_RESOLUTION_AMBIGUITY!>values<!>
|
||||
val resultEntries = <!DEPRECATED_ACCESS_TO_ENTRIES_AS_QUALIFIER!>SomeClass.entries<!>
|
||||
val resultEntriesRef = SomeClass::<!DEPRECATED_ACCESS_TO_ENUM_ENTRY_PROPERTY_AS_REFERENCE!>entries<!>
|
||||
|
||||
+4
-4
@@ -44,10 +44,10 @@ FILE: constructorVsSyntheticValues.fir.kt
|
||||
public get(): R|kotlin/enums/EnumEntries<SomeClass>|
|
||||
|
||||
}
|
||||
public final val resultValues: R|kotlin/Array<SomeClass>| = Q|SomeClass|.R|/SomeClass.values*s|()
|
||||
public get(): R|kotlin/Array<SomeClass>|
|
||||
public final val resultValuesRef: R|kotlin/reflect/KFunction0<kotlin/Array<SomeClass>>| = Q|SomeClass|::R|/SomeClass.values*s|
|
||||
public get(): R|kotlin/reflect/KFunction0<kotlin/Array<SomeClass>>|
|
||||
public final val resultValues: <ERROR TYPE REF: Ambiguity: values, [/SomeClass.values, /SomeClass.values.values]> = Q|SomeClass|.<Ambiguity: values, [/SomeClass.values, /SomeClass.values.values]>#()
|
||||
public get(): <ERROR TYPE REF: Ambiguity: values, [/SomeClass.values, /SomeClass.values.values]>
|
||||
public final val resultValuesRef: <ERROR TYPE REF: Ambiguity: values, [/SomeClass.values, /SomeClass.values.values]> = Q|SomeClass|::<Ambiguity: values, [/SomeClass.values, /SomeClass.values.values]>#
|
||||
public get(): <ERROR TYPE REF: Ambiguity: values, [/SomeClass.values, /SomeClass.values.values]>
|
||||
public final val resultEntries: R|SomeClass.entries.Companion| = Q|SomeClass.entries|
|
||||
public get(): R|SomeClass.entries.Companion|
|
||||
public final val resultEntriesRef: R|kotlin/reflect/KFunction0<SomeClass.entries>| = Q|SomeClass|::R|/SomeClass.entries.entries|
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// ISSUE: KT-65789
|
||||
// LANGUAGE: +PrioritizedEnumEntries
|
||||
// FIR_DUMP
|
||||
|
||||
enum class SomeClass {
|
||||
FIRST, LAST;
|
||||
|
||||
class entries {
|
||||
companion object
|
||||
}
|
||||
}
|
||||
|
||||
val resultEntries = SomeClass.entries
|
||||
val resultEntriesRef = SomeClass::<!OVERLOAD_RESOLUTION_AMBIGUITY!>entries<!>
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
FILE: constructorVsSyntheticValuesPrioritized.kt
|
||||
FILE: constructorVsSyntheticValuesPrioritized.fir.kt
|
||||
public final enum class SomeClass : R|kotlin/Enum<SomeClass>| {
|
||||
private constructor(): R|SomeClass| {
|
||||
super<R|kotlin/Enum<SomeClass>|>()
|
||||
@@ -32,5 +32,5 @@ FILE: constructorVsSyntheticValuesPrioritized.kt
|
||||
}
|
||||
public final val resultEntries: R|kotlin/enums/EnumEntries<SomeClass>| = Q|SomeClass|.R|/SomeClass.entries*s|
|
||||
public get(): R|kotlin/enums/EnumEntries<SomeClass>|
|
||||
public final val resultEntriesRef: R|kotlin/reflect/KProperty0<kotlin/enums/EnumEntries<SomeClass>>| = Q|SomeClass|::R|/SomeClass.entries*s|
|
||||
public get(): R|kotlin/reflect/KProperty0<kotlin/enums/EnumEntries<SomeClass>>|
|
||||
public final val resultEntriesRef: <ERROR TYPE REF: Ambiguity: entries, [/SomeClass.entries, /SomeClass.entries.entries]> = Q|SomeClass|::<Ambiguity: entries, [/SomeClass.entries, /SomeClass.entries.entries]>#
|
||||
public get(): <ERROR TYPE REF: Ambiguity: entries, [/SomeClass.entries, /SomeClass.entries.entries]>
|
||||
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
// FIR_IDENTICAL
|
||||
// ISSUE: KT-65789
|
||||
// LANGUAGE: +PrioritizedEnumEntries
|
||||
// FIR_DUMP
|
||||
|
||||
+2
-2
@@ -14,8 +14,8 @@ FILE: Foo.kt
|
||||
}
|
||||
public final val foo: R|bar/Foo| = R|bar/Foo.Foo|(String(1))
|
||||
public get(): R|bar/Foo|
|
||||
public final val barFoo: R|kotlin/Unit| = Q|bar|.R|bar/Foo|(String(2))
|
||||
public get(): R|kotlin/Unit|
|
||||
public final val barFoo: R|bar/Foo| = Q|bar|.R|bar/Foo.Foo|(String(2))
|
||||
public get(): R|bar/Foo|
|
||||
FILE: another.kt
|
||||
package foo
|
||||
|
||||
|
||||
Reference in New Issue
Block a user