[FIR] Properly assign <local> packages to symbols

This prevents `FirConflictsExpressionChecker.kt`
from missing conflicting local functions. It used
to due to inconsistencies in assigning `<local>`,
and this commit makes it a bit more
straightforward.

The change in KtClassTypeQualifierRenderer
prevents `FirOverrideImplementTest.testLocalClass`
from failing in `intellij`. It didn't fail for
callables, because `KtCallableSignatureRenderer`
doesn't try to render packages.

^KT-59186 Fixed
This commit is contained in:
Nikolay Lunyak
2023-08-09 15:18:03 +03:00
committed by Space Team
parent cf655fd5ad
commit f9c6af4d2a
107 changed files with 733 additions and 891 deletions
@@ -10,4 +10,4 @@
/methodDeclaration.fir.kt:(870,875): error: Val cannot be reassigned
/methodDeclaration.fir.kt:(878,880): error: Assignment type mismatch: actual type is 'kotlin/Int' but 'IntProperty' was expected
/methodDeclaration.fir.kt:(878,880): error: Assignment type mismatch: actual type is 'kotlin/Int' but '<local>/IntProperty' was expected
@@ -1,14 +1,14 @@
FILE: localClassWithCompanionObject.kt
public final fun box(): R|kotlin/String| {
@R|org/jetbrains/kotlin/fir/plugin/CompanionWithFoo|() local final class SomeClass : R|kotlin/Any| {
public constructor(): R|SomeClass| {
public constructor(): R|<local>/SomeClass| {
super<R|kotlin/Any|>()
}
public final companion object Companion : R|kotlin/Any| {
public final fun foo(): R|kotlin/Int|
private constructor(): R|SomeClass.Companion| {
private constructor(): R|<local>/SomeClass.Companion| {
super<R|kotlin/Any|>()
}
@@ -26,8 +26,8 @@ FILE: localClassWithCompanionObject.kt
}
local final fun test(): R|kotlin/Unit| {
R|<local>/takeInt|(Q|SomeClass|.R|/SomeClass.Companion.foo|())
R|<local>/takeInt|(Q|SomeClass.Companion|.R|/SomeClass.Companion.foo|())
R|<local>/takeInt|(Q|<local>/SomeClass|.R|<local>/SomeClass.Companion.foo|())
R|<local>/takeInt|(Q|<local>/SomeClass.Companion|.R|<local>/SomeClass.Companion.foo|())
}
R|<local>/test|()
@@ -1,19 +1,19 @@
FILE: localClassWithCompanionObject.kt
public final fun context(): R|kotlin/Unit| {
@R|org/jetbrains/kotlin/fir/plugin/CompanionWithFoo|() local final class SomeClass : R|kotlin/Any| {
public constructor(): R|SomeClass| {
public constructor(): R|<local>/SomeClass| {
super<R|kotlin/Any|>()
}
@R|org/jetbrains/kotlin/fir/plugin/CompanionWithFoo|() local final class Nested : R|kotlin/Any| {
public constructor(): R|SomeClass.Nested| {
public constructor(): R|<local>/SomeClass.Nested| {
super<R|kotlin/Any|>()
}
public final companion object Companion : R|kotlin/Any| {
public final fun foo(): R|kotlin/Int|
private constructor(): R|SomeClass.Nested.Companion| {
private constructor(): R|<local>/SomeClass.Nested.Companion| {
super<R|kotlin/Any|>()
}
@@ -24,7 +24,7 @@ FILE: localClassWithCompanionObject.kt
public final companion object Companion : R|kotlin/Any| {
public final fun foo(): R|kotlin/Int|
private constructor(): R|SomeClass.Companion| {
private constructor(): R|<local>/SomeClass.Companion| {
super<R|kotlin/Any|>()
}
@@ -36,10 +36,10 @@ FILE: localClassWithCompanionObject.kt
}
local final fun test(): R|kotlin/Unit| {
R|<local>/takeInt|(Q|SomeClass|.R|/SomeClass.Companion.foo|())
R|<local>/takeInt|(Q|SomeClass.Companion|.R|/SomeClass.Companion.foo|())
R|<local>/takeInt|(Q|SomeClass.Nested|.R|/SomeClass.Nested.Companion.foo|())
R|<local>/takeInt|(Q|SomeClass.Nested.Companion|.R|/SomeClass.Nested.Companion.foo|())
R|<local>/takeInt|(Q|<local>/SomeClass|.R|<local>/SomeClass.Companion.foo|())
R|<local>/takeInt|(Q|<local>/SomeClass.Companion|.R|<local>/SomeClass.Companion.foo|())
R|<local>/takeInt|(Q|<local>/SomeClass.Nested|.R|<local>/SomeClass.Nested.Companion.foo|())
R|<local>/takeInt|(Q|<local>/SomeClass.Nested.Companion|.R|<local>/SomeClass.Nested.Companion.foo|())
}
}
@@ -1,7 +1,7 @@
FILE: serializerInLocalClass.kt
public final fun local(): R|kotlin/String| {
@R|kotlinx/serialization/Serializable|() local final data class Carrier : R|kotlin/Any| {
public constructor(i: R|kotlin/Int|): R|Carrier| {
public constructor(i: R|kotlin/Int|): R|<local>/Carrier| {
super<R|kotlin/Any|>()
}
@@ -10,28 +10,28 @@ FILE: serializerInLocalClass.kt
public final operator fun component1(): R|kotlin/Int|
public final fun copy(i: R|kotlin/Int| = this@R|/Carrier|.R|<local>/i|): R|Carrier|
public final fun copy(i: R|kotlin/Int| = this@R|<local>/Carrier|.R|<local>/i|): R|<local>/Carrier|
public final companion object Companion : R|kotlin/Any| {
public final fun serializer(): R|kotlinx/serialization/KSerializer<Carrier>|
public final fun serializer(): R|kotlinx/serialization/KSerializer<<local>/Carrier>|
private constructor(): R|Carrier.Companion| {
private constructor(): R|<local>/Carrier.Companion| {
super<R|kotlin/Any|>()
}
}
public final object $serializer : R|kotlinx/serialization/internal/GeneratedSerializer<Carrier>| {
public final fun serialize(encoder: R|kotlinx/serialization/encoding/Encoder|, value: R|Carrier|): R|kotlin/Unit|
public final object $serializer : R|kotlinx/serialization/internal/GeneratedSerializer<<local>/Carrier>| {
public final fun serialize(encoder: R|kotlinx/serialization/encoding/Encoder|, value: R|<local>/Carrier|): R|kotlin/Unit|
public final fun deserialize(decoder: R|kotlinx/serialization/encoding/Decoder|): R|Carrier|
public final fun deserialize(decoder: R|kotlinx/serialization/encoding/Decoder|): R|<local>/Carrier|
public final val descriptor: R|kotlinx/serialization/descriptors/SerialDescriptor|
public get(): R|kotlinx/serialization/descriptors/SerialDescriptor|
public final fun childSerializers(): R|kotlin/Array<kotlinx/serialization/KSerializer<*>>|
private constructor(): R|Carrier.$serializer| {
private constructor(): R|<local>/Carrier.$serializer| {
super<R|kotlin/Any|>()
}
@@ -39,7 +39,7 @@ FILE: serializerInLocalClass.kt
}
^local Q|Carrier|.R|/Carrier.Companion.serializer|().R|SubstitutionOverride<kotlinx/serialization/KSerializer.descriptor: R|kotlinx/serialization/descriptors/SerialDescriptor|>|.R|kotlin/Any.toString|()
^local Q|<local>/Carrier|.R|<local>/Carrier.Companion.serializer|().R|SubstitutionOverride<kotlinx/serialization/KSerializer.descriptor: R|kotlinx/serialization/descriptors/SerialDescriptor|>|.R|kotlin/Any.toString|()
}
public final fun box(): R|kotlin/String| {
lval expected: R|kotlin/String| = String(local.Carrier(i: kotlin.Int))