[FIR] Add forgotten replacing arguments in abbreviated type expansion
This commit is contained in:
@@ -18,7 +18,17 @@ sealed class ConeKotlinTypeProjection : TypeArgumentMarker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum class ProjectionKind {
|
enum class ProjectionKind {
|
||||||
STAR, IN, OUT, INVARIANT
|
STAR, IN, OUT, INVARIANT;
|
||||||
|
|
||||||
|
operator fun plus(other: ProjectionKind): ProjectionKind {
|
||||||
|
return when {
|
||||||
|
this == other -> this
|
||||||
|
this == STAR || other == STAR -> STAR
|
||||||
|
this == INVARIANT -> other
|
||||||
|
other == INVARIANT -> this
|
||||||
|
else -> STAR
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object ConeStarProjection : ConeKotlinTypeProjection() {
|
object ConeStarProjection : ConeKotlinTypeProjection() {
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.FirNamedReferenceWithCandidate
|
import org.jetbrains.kotlin.fir.resolve.calls.FirNamedReferenceWithCandidate
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.substitution.AbstractConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.resultType
|
import org.jetbrains.kotlin.fir.resolve.transformers.resultType
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.withReplacedConeType
|
import org.jetbrains.kotlin.fir.scopes.impl.withReplacedConeType
|
||||||
import org.jetbrains.kotlin.fir.symbols.*
|
import org.jetbrains.kotlin.fir.symbols.*
|
||||||
@@ -46,10 +47,41 @@ fun ConeClassLikeLookupTag.toSymbol(useSiteSession: FirSession): ConeClassifierS
|
|||||||
return firSymbolProvider.getSymbolByLookupTag(this)
|
return firSymbolProvider.getSymbolByLookupTag(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun ConeAbbreviatedType.directExpansionType(useSiteSession: FirSession): ConeClassLikeType? =
|
fun ConeAbbreviatedType.directExpansionType(useSiteSession: FirSession): ConeClassLikeType? {
|
||||||
abbreviationLookupTag
|
val typeAlias = abbreviationLookupTag
|
||||||
.toSymbol(useSiteSession)
|
.toSymbol(useSiteSession)
|
||||||
?.safeAs<FirTypeAliasSymbol>()?.fir?.expandedConeType
|
?.safeAs<FirTypeAliasSymbol>()?.fir ?: return null
|
||||||
|
|
||||||
|
val resultType = typeAlias.expandedConeType ?: return null
|
||||||
|
if (resultType.typeArguments.isEmpty()) return resultType
|
||||||
|
return mapTypeAliasArguments(typeAlias, this, resultType) as? ConeClassLikeType
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun mapTypeAliasArguments(typeAlias: FirTypeAlias, abbreviatedType: ConeAbbreviatedType, resultingType: ConeClassLikeType): ConeKotlinType {
|
||||||
|
val typeAliasMap = typeAlias.typeParameters.map { it.symbol }.zip(abbreviatedType.typeArguments).toMap()
|
||||||
|
|
||||||
|
val substitutor = object : AbstractConeSubstitutor() {
|
||||||
|
override fun substituteType(type: ConeKotlinType): ConeKotlinType? {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun substituteArgument(projection: ConeKotlinTypeProjection): ConeKotlinTypeProjection? {
|
||||||
|
val type = (projection as? ConeTypedProjection)?.type ?: return null
|
||||||
|
val symbol = (type as? ConeTypeParameterType)?.lookupTag?.toSymbol() ?: return super.substituteArgument(projection)
|
||||||
|
val mappedProjection = typeAliasMap[symbol] ?: return super.substituteArgument(projection)
|
||||||
|
val mappedType = (mappedProjection as? ConeTypedProjection)?.type ?: return mappedProjection
|
||||||
|
val resultingKind = mappedProjection.kind + projection.kind
|
||||||
|
return when (resultingKind) {
|
||||||
|
ProjectionKind.STAR -> ConeStarProjection
|
||||||
|
ProjectionKind.IN -> ConeKotlinTypeProjectionIn(mappedType)
|
||||||
|
ProjectionKind.OUT -> ConeKotlinTypeProjectionOut(mappedType)
|
||||||
|
ProjectionKind.INVARIANT -> mappedType
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return substitutor.substituteOrSelf(resultingType)
|
||||||
|
}
|
||||||
|
|
||||||
fun ConeClassifierLookupTag.toSymbol(useSiteSession: FirSession): ConeClassifierSymbol? =
|
fun ConeClassifierLookupTag.toSymbol(useSiteSession: FirSession): ConeClassifierSymbol? =
|
||||||
when (this) {
|
when (this) {
|
||||||
@@ -137,7 +169,7 @@ fun <T : ConeKotlinType> T.withNullability(nullability: ConeNullability): T {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun <T : ConeKotlinType> T.withArguments(arguments: Array<ConeKotlinTypeProjection>): T {
|
fun <T : ConeKotlinType> T.withArguments(arguments: Array<out ConeKotlinTypeProjection>): T {
|
||||||
if (this.typeArguments === arguments) {
|
if (this.typeArguments === arguments) {
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-5
@@ -34,7 +34,7 @@ fun ConeSubstitutor.substituteOrNull(type: ConeKotlinType?): ConeKotlinType? {
|
|||||||
}
|
}
|
||||||
|
|
||||||
abstract class AbstractConeSubstitutor : ConeSubstitutor() {
|
abstract class AbstractConeSubstitutor : ConeSubstitutor() {
|
||||||
private fun wrapProjection(old: ConeKotlinTypeProjection, newType: ConeKotlinType): ConeKotlinTypeProjection {
|
protected fun wrapProjection(old: ConeKotlinTypeProjection, newType: ConeKotlinType): ConeKotlinTypeProjection {
|
||||||
return when (old) {
|
return when (old) {
|
||||||
is ConeStarProjection -> old
|
is ConeStarProjection -> old
|
||||||
is ConeKotlinTypeProjectionIn -> ConeKotlinTypeProjectionIn(newType)
|
is ConeKotlinTypeProjectionIn -> ConeKotlinTypeProjectionIn(newType)
|
||||||
@@ -45,6 +45,11 @@ abstract class AbstractConeSubstitutor : ConeSubstitutor() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
abstract fun substituteType(type: ConeKotlinType): ConeKotlinType?
|
abstract fun substituteType(type: ConeKotlinType): ConeKotlinType?
|
||||||
|
open fun substituteArgument(projection: ConeKotlinTypeProjection): ConeKotlinTypeProjection? {
|
||||||
|
val type = (projection as? ConeTypedProjection)?.type ?: return null
|
||||||
|
val newType = substituteOrNull(type) ?: return null
|
||||||
|
return wrapProjection(projection, newType)
|
||||||
|
}
|
||||||
|
|
||||||
fun makeNullableIfNeed(isNullable: Boolean, type: ConeKotlinType?): ConeKotlinType? {
|
fun makeNullableIfNeed(isNullable: Boolean, type: ConeKotlinType?): ConeKotlinType? {
|
||||||
if (!isNullable) return type
|
if (!isNullable) return type
|
||||||
@@ -93,11 +98,8 @@ abstract class AbstractConeSubstitutor : ConeSubstitutor() {
|
|||||||
val newArguments by lazy { arrayOfNulls<ConeKotlinTypeProjection>(typeArguments.size) }
|
val newArguments by lazy { arrayOfNulls<ConeKotlinTypeProjection>(typeArguments.size) }
|
||||||
var initialized = false
|
var initialized = false
|
||||||
for ((index, typeArgument) in this.typeArguments.withIndex()) {
|
for ((index, typeArgument) in this.typeArguments.withIndex()) {
|
||||||
val type = (typeArgument as? ConeTypedProjection)?.type ?: continue
|
newArguments[index] = substituteArgument(typeArgument)?.also {
|
||||||
val newType = substituteOrNull(type)
|
|
||||||
if (newType != null) {
|
|
||||||
initialized = true
|
initialized = true
|
||||||
newArguments[index] = wrapProjection(typeArgument, newType)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,10 +16,10 @@ FILE: simpleDelegatedToMap.kt
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public final var bar: <ERROR TYPE REF: Inapplicable(PARAMETER_MAPPING_ERROR): [kotlin/collections/getValue]>by R|kotlin/collections/hashMapOf|<R|kotlin/String|, R|kotlin/Any|>()
|
public final var bar: <ERROR TYPE REF: Ambiguity: getValue, [kotlin/collections/getValue, kotlin/collections/getValue, kotlin/collections/getValue]>by R|kotlin/collections/hashMapOf|<R|kotlin/String|, R|kotlin/Any|>()
|
||||||
public get(): <ERROR TYPE REF: Inapplicable(PARAMETER_MAPPING_ERROR): [kotlin/collections/getValue]> {
|
public get(): <ERROR TYPE REF: Ambiguity: getValue, [kotlin/collections/getValue, kotlin/collections/getValue, kotlin/collections/getValue]> {
|
||||||
^ D|/bar|.<Inapplicable(PARAMETER_MAPPING_ERROR): [kotlin/collections/getValue]>#(Null(null), ::R|/bar|)
|
^ D|/bar|.<Ambiguity: getValue, [kotlin/collections/getValue, kotlin/collections/getValue, kotlin/collections/getValue]>#(Null(null), ::R|/bar|)
|
||||||
}
|
}
|
||||||
public set(<set-?>: <ERROR TYPE REF: Inapplicable(PARAMETER_MAPPING_ERROR): [kotlin/collections/getValue]>): R|kotlin/Unit| {
|
public set(<set-?>: <ERROR TYPE REF: Ambiguity: getValue, [kotlin/collections/getValue, kotlin/collections/getValue, kotlin/collections/getValue]>): R|kotlin/Unit| {
|
||||||
D|/bar|.<Inapplicable(WRONG_RECEIVER): [kotlin/collections/setValue]>#(Null(null), ::R|/bar|, R|<local>/<set-?>|)
|
D|/bar|.<Inapplicable(INAPPLICABLE): [kotlin/collections/setValue]>#(Null(null), ::R|/bar|, R|<local>/<set-?>|)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,94 @@
|
|||||||
|
interface A {
|
||||||
|
fun foo()
|
||||||
|
}
|
||||||
|
|
||||||
|
interface B {
|
||||||
|
fun bar()
|
||||||
|
}
|
||||||
|
|
||||||
|
interface C {
|
||||||
|
fun baz()
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Inv<K, T>() {
|
||||||
|
fun k(): K
|
||||||
|
fun t(): T
|
||||||
|
}
|
||||||
|
|
||||||
|
typealias Inv0 = Inv<A, B>
|
||||||
|
typealias Inv1<X> = Inv<A, X>
|
||||||
|
typealias Inv2<X, Y> = Inv<X, Y>
|
||||||
|
typealias Inv3<X, Y, Z> = Inv<X, Z>
|
||||||
|
|
||||||
|
fun testBase(inv: Inv<A, B>) {
|
||||||
|
inv.k()
|
||||||
|
inv.t()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test_0(inv: Inv0) {
|
||||||
|
inv.k().foo()
|
||||||
|
inv.t().bar()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test_1(inv: Inv1<B>) {
|
||||||
|
inv.k().foo()
|
||||||
|
inv.t().bar()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test_2(inv: Inv2<A, B>) {
|
||||||
|
inv.k().foo()
|
||||||
|
inv.t().bar()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test_3(inv: Inv3<A, B, C>) {
|
||||||
|
inv.k().foo()
|
||||||
|
inv.t().bar()
|
||||||
|
inv.t().baz()
|
||||||
|
}
|
||||||
|
|
||||||
|
typealias Inv02<A1, B1, C1> = Inv<Inv<A1, B1>, C1>
|
||||||
|
|
||||||
|
fun test_4(inv: Inv02<A, B, C>) {
|
||||||
|
inv.k().k().foo()
|
||||||
|
inv.k().t().bar()
|
||||||
|
inv.t().baz()
|
||||||
|
}
|
||||||
|
|
||||||
|
interface In<in T> {
|
||||||
|
fun take(x: T)
|
||||||
|
}
|
||||||
|
interface Out<out T> {
|
||||||
|
fun value(): T
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Invariant<T> {
|
||||||
|
fun take(x: T)
|
||||||
|
fun value(): T
|
||||||
|
}
|
||||||
|
|
||||||
|
typealias In1<X> = In<X>
|
||||||
|
typealias Out1<X> = Out<X>
|
||||||
|
typealias Invariant1<X> = Invariant<X>
|
||||||
|
|
||||||
|
|
||||||
|
fun test_5(a: A, in1: In1<A>, in2: In1<in A>, in3: In1<out A>) {
|
||||||
|
in1.take(a)
|
||||||
|
in2.take(a)
|
||||||
|
in3.take(a)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test_6(a: A, out1: Out1<A>, out2: Out1<in A>, out3: Out1<out A>) {
|
||||||
|
out1.value().foo()
|
||||||
|
out2.value().foo()
|
||||||
|
out3.value().foo()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test_7(a: A, inv1: Invariant1<A>, inv2: Invariant1<in A>, inv3: Invariant1<out A>) {
|
||||||
|
inv1.value().foo()
|
||||||
|
inv2.value().foo()
|
||||||
|
inv3.value().foo()
|
||||||
|
|
||||||
|
inv1.take(a)
|
||||||
|
inv2.take(a)
|
||||||
|
inv3.take(a)
|
||||||
|
}
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
FILE: typeAliasWithTypeArguments.kt
|
||||||
|
public abstract interface A : R|kotlin/Any| {
|
||||||
|
public abstract fun foo(): R|kotlin/Unit|
|
||||||
|
|
||||||
|
}
|
||||||
|
public abstract interface B : R|kotlin/Any| {
|
||||||
|
public abstract fun bar(): R|kotlin/Unit|
|
||||||
|
|
||||||
|
}
|
||||||
|
public abstract interface C : R|kotlin/Any| {
|
||||||
|
public abstract fun baz(): R|kotlin/Unit|
|
||||||
|
|
||||||
|
}
|
||||||
|
public abstract interface Inv<K, T> : R|kotlin/Any| {
|
||||||
|
public abstract fun k(): R|K|
|
||||||
|
|
||||||
|
public abstract fun t(): R|T|
|
||||||
|
|
||||||
|
}
|
||||||
|
public final typealias Inv0 = R|Inv<A, B>|
|
||||||
|
public final typealias Inv1<X> = R|Inv<A, X>|
|
||||||
|
public final typealias Inv2<X, Y> = R|Inv<X, Y>|
|
||||||
|
public final typealias Inv3<X, Y, Z> = R|Inv<X, Z>|
|
||||||
|
public final fun testBase(inv: R|Inv<A, B>|): R|kotlin/Unit| {
|
||||||
|
R|<local>/inv|.R|FakeOverride</Inv.k: R|A|>|()
|
||||||
|
R|<local>/inv|.R|FakeOverride</Inv.t: R|B|>|()
|
||||||
|
}
|
||||||
|
public final fun test_0(inv: R|Inv0|): R|kotlin/Unit| {
|
||||||
|
R|<local>/inv|.R|FakeOverride</Inv.k: R|A|>|().R|/A.foo|()
|
||||||
|
R|<local>/inv|.R|FakeOverride</Inv.t: R|B|>|().R|/B.bar|()
|
||||||
|
}
|
||||||
|
public final fun test_1(inv: R|Inv1<B>|): R|kotlin/Unit| {
|
||||||
|
R|<local>/inv|.R|FakeOverride</Inv.k: R|A|>|().R|/A.foo|()
|
||||||
|
R|<local>/inv|.R|FakeOverride</Inv.t: R|B|>|().R|/B.bar|()
|
||||||
|
}
|
||||||
|
public final fun test_2(inv: R|Inv2<A, B>|): R|kotlin/Unit| {
|
||||||
|
R|<local>/inv|.R|FakeOverride</Inv.k: R|A|>|().R|/A.foo|()
|
||||||
|
R|<local>/inv|.R|FakeOverride</Inv.t: R|B|>|().R|/B.bar|()
|
||||||
|
}
|
||||||
|
public final fun test_3(inv: R|Inv3<A, B, C>|): R|kotlin/Unit| {
|
||||||
|
R|<local>/inv|.R|FakeOverride</Inv.k: R|A|>|().R|/A.foo|()
|
||||||
|
R|<local>/inv|.R|FakeOverride</Inv.t: R|C|>|().<Unresolved name: bar>#()
|
||||||
|
R|<local>/inv|.R|FakeOverride</Inv.t: R|C|>|().R|/C.baz|()
|
||||||
|
}
|
||||||
|
public final typealias Inv02<A1, B1, C1> = R|Inv<Inv<A1, B1>, C1>|
|
||||||
|
public final fun test_4(inv: R|Inv02<A, B, C>|): R|kotlin/Unit| {
|
||||||
|
R|<local>/inv|.R|FakeOverride</Inv.k: R|Inv<A, B>|>|().R|FakeOverride</Inv.k: R|A|>|().R|/A.foo|()
|
||||||
|
R|<local>/inv|.R|FakeOverride</Inv.k: R|Inv<A, B>|>|().R|FakeOverride</Inv.t: R|B|>|().R|/B.bar|()
|
||||||
|
R|<local>/inv|.R|FakeOverride</Inv.t: R|C|>|().R|/C.baz|()
|
||||||
|
}
|
||||||
|
public abstract interface In<in T> : R|kotlin/Any| {
|
||||||
|
public abstract fun take(x: R|T|): R|kotlin/Unit|
|
||||||
|
|
||||||
|
}
|
||||||
|
public abstract interface Out<out T> : R|kotlin/Any| {
|
||||||
|
public abstract fun value(): R|T|
|
||||||
|
|
||||||
|
}
|
||||||
|
public abstract interface Invariant<T> : R|kotlin/Any| {
|
||||||
|
public abstract fun take(x: R|T|): R|kotlin/Unit|
|
||||||
|
|
||||||
|
public abstract fun value(): R|T|
|
||||||
|
|
||||||
|
}
|
||||||
|
public final typealias In1<X> = R|In<X>|
|
||||||
|
public final typealias Out1<X> = R|Out<X>|
|
||||||
|
public final typealias Invariant1<X> = R|Invariant<X>|
|
||||||
|
public final fun test_5(a: R|A|, in1: R|In1<A>|, in2: R|In1<in A>|, in3: R|In1<out A>|): R|kotlin/Unit| {
|
||||||
|
R|<local>/in1|.R|FakeOverride</In.take: R|kotlin/Unit|>|(R|<local>/a|)
|
||||||
|
R|<local>/in2|.R|FakeOverride</In.take: R|kotlin/Unit|>|(R|<local>/a|)
|
||||||
|
R|<local>/in3|.R|FakeOverride</In.take: R|kotlin/Unit|>|(R|<local>/a|)
|
||||||
|
}
|
||||||
|
public final fun test_6(a: R|A|, out1: R|Out1<A>|, out2: R|Out1<in A>|, out3: R|Out1<out A>|): R|kotlin/Unit| {
|
||||||
|
R|<local>/out1|.R|FakeOverride</Out.value: R|A|>|().R|/A.foo|()
|
||||||
|
R|<local>/out2|.R|FakeOverride</Out.value: R|A|>|().R|/A.foo|()
|
||||||
|
R|<local>/out3|.R|FakeOverride</Out.value: R|A|>|().R|/A.foo|()
|
||||||
|
}
|
||||||
|
public final fun test_7(a: R|A|, inv1: R|Invariant1<A>|, inv2: R|Invariant1<in A>|, inv3: R|Invariant1<out A>|): R|kotlin/Unit| {
|
||||||
|
R|<local>/inv1|.R|FakeOverride</Invariant.value: R|A|>|().R|/A.foo|()
|
||||||
|
R|<local>/inv2|.R|FakeOverride</Invariant.value: R|A|>|().R|/A.foo|()
|
||||||
|
R|<local>/inv3|.R|FakeOverride</Invariant.value: R|A|>|().R|/A.foo|()
|
||||||
|
R|<local>/inv1|.R|FakeOverride</Invariant.take: R|kotlin/Unit|>|(R|<local>/a|)
|
||||||
|
R|<local>/inv2|.R|FakeOverride</Invariant.take: R|kotlin/Unit|>|(R|<local>/a|)
|
||||||
|
R|<local>/inv3|.R|FakeOverride</Invariant.take: R|kotlin/Unit|>|(R|<local>/a|)
|
||||||
|
}
|
||||||
+5
@@ -144,6 +144,11 @@ public class FirResolveTestCaseGenerated extends AbstractFirResolveTestCase {
|
|||||||
runTest("compiler/fir/resolve/testData/resolve/typeAliasWithGeneric.kt");
|
runTest("compiler/fir/resolve/testData/resolve/typeAliasWithGeneric.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("typeAliasWithTypeArguments.kt")
|
||||||
|
public void testTypeAliasWithTypeArguments() throws Exception {
|
||||||
|
runTest("compiler/fir/resolve/testData/resolve/typeAliasWithTypeArguments.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("typeFromGetter.kt")
|
@TestMetadata("typeFromGetter.kt")
|
||||||
public void testTypeFromGetter() throws Exception {
|
public void testTypeFromGetter() throws Exception {
|
||||||
runTest("compiler/fir/resolve/testData/resolve/typeFromGetter.kt");
|
runTest("compiler/fir/resolve/testData/resolve/typeFromGetter.kt");
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ FILE fqName:<root> fileName:/classLevelProperties.kt
|
|||||||
$this: VALUE_PARAMETER name:<this> type:<root>.C
|
$this: VALUE_PARAMETER name:<this> type:<root>.C
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun <get-test8> (): IrErrorType declared in <root>.C'
|
RETURN type=kotlin.Nothing from='public final fun <get-test8> (): IrErrorType declared in <root>.C'
|
||||||
ERROR_CALL 'Unresolved reference: <Inapplicable(PARAMETER_MAPPING_ERROR): [kotlin/collections/getValue]>#' type=IrErrorType
|
ERROR_CALL 'Unresolved reference: <Ambiguity: getValue, [kotlin/collections/getValue, kotlin/collections/getValue, kotlin/collections/getValue]>#' type=IrErrorType
|
||||||
ERROR_CALL 'Unresolved reference: this#' type=<root>.C
|
ERROR_CALL 'Unresolved reference: this#' type=<root>.C
|
||||||
PROPERTY_REFERENCE 'public final test8: IrErrorType [delegated,var]' field='FIELD DELEGATE name:test8$delegate type:java.util.HashMap<kotlin.String, kotlin.Int> visibility:private [final]' getter=null setter=null type=kotlin.reflect.KProperty<*> origin=null
|
PROPERTY_REFERENCE 'public final test8: IrErrorType [delegated,var]' field='FIELD DELEGATE name:test8$delegate type:java.util.HashMap<kotlin.String, kotlin.Int> visibility:private [final]' getter=null setter=null type=kotlin.reflect.KProperty<*> origin=null
|
||||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-test8> visibility:public modality:FINAL <> ($this:<root>.C, <set-?>:IrErrorType) returnType:kotlin.Unit
|
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-test8> visibility:public modality:FINAL <> ($this:<root>.C, <set-?>:IrErrorType) returnType:kotlin.Unit
|
||||||
@@ -117,7 +117,7 @@ FILE fqName:<root> fileName:/classLevelProperties.kt
|
|||||||
$this: VALUE_PARAMETER name:<this> type:<root>.C
|
$this: VALUE_PARAMETER name:<this> type:<root>.C
|
||||||
VALUE_PARAMETER name:<set-?> index:0 type:IrErrorType
|
VALUE_PARAMETER name:<set-?> index:0 type:IrErrorType
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
ERROR_CALL 'Unresolved reference: <Inapplicable(WRONG_RECEIVER): [kotlin/collections/setValue]>#' type=IrErrorType
|
ERROR_CALL 'Unresolved reference: <Inapplicable(INAPPLICABLE): [kotlin/collections/setValue]>#' type=IrErrorType
|
||||||
ERROR_CALL 'Unresolved reference: this#' type=<root>.C
|
ERROR_CALL 'Unresolved reference: this#' type=<root>.C
|
||||||
PROPERTY_REFERENCE 'public final test8: IrErrorType [delegated,var]' field='FIELD DELEGATE name:test8$delegate type:java.util.HashMap<kotlin.String, kotlin.Int> visibility:private [final]' getter='public final fun <get-test8> (): IrErrorType declared in <root>.C' setter=null type=kotlin.reflect.KProperty<*> origin=null
|
PROPERTY_REFERENCE 'public final test8: IrErrorType [delegated,var]' field='FIELD DELEGATE name:test8$delegate type:java.util.HashMap<kotlin.String, kotlin.Int> visibility:private [final]' getter='public final fun <get-test8> (): IrErrorType declared in <root>.C' setter=null type=kotlin.reflect.KProperty<*> origin=null
|
||||||
GET_VAR '<set-?>: IrErrorType declared in <root>.C.<set-test8>' type=IrErrorType origin=null
|
GET_VAR '<set-?>: IrErrorType declared in <root>.C.<set-test8>' type=IrErrorType origin=null
|
||||||
|
|||||||
@@ -93,14 +93,14 @@ FILE fqName:<root> fileName:/delegatedProperties.kt
|
|||||||
correspondingProperty: PROPERTY name:test4 visibility:public modality:FINAL [delegated,var]
|
correspondingProperty: PROPERTY name:test4 visibility:public modality:FINAL [delegated,var]
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun <get-test4> (): IrErrorType declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun <get-test4> (): IrErrorType declared in <root>'
|
||||||
ERROR_CALL 'Unresolved reference: <Inapplicable(PARAMETER_MAPPING_ERROR): [kotlin/collections/getValue]>#' type=IrErrorType
|
ERROR_CALL 'Unresolved reference: <Ambiguity: getValue, [kotlin/collections/getValue, kotlin/collections/getValue, kotlin/collections/getValue]>#' type=IrErrorType
|
||||||
CONST Null type=kotlin.Nothing? value=null
|
CONST Null type=kotlin.Nothing? value=null
|
||||||
PROPERTY_REFERENCE 'public final test4: IrErrorType [delegated,var]' field='FIELD DELEGATE name:test4$delegate type:java.util.HashMap<kotlin.String, kotlin.Any> visibility:private [final,static]' getter=null setter=null type=kotlin.reflect.KProperty<*> origin=null
|
PROPERTY_REFERENCE 'public final test4: IrErrorType [delegated,var]' field='FIELD DELEGATE name:test4$delegate type:java.util.HashMap<kotlin.String, kotlin.Any> visibility:private [final,static]' getter=null setter=null type=kotlin.reflect.KProperty<*> origin=null
|
||||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-test4> visibility:public modality:FINAL <> (<set-?>:IrErrorType) returnType:kotlin.Unit
|
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-test4> visibility:public modality:FINAL <> (<set-?>:IrErrorType) returnType:kotlin.Unit
|
||||||
correspondingProperty: PROPERTY name:test4 visibility:public modality:FINAL [delegated,var]
|
correspondingProperty: PROPERTY name:test4 visibility:public modality:FINAL [delegated,var]
|
||||||
VALUE_PARAMETER name:<set-?> index:0 type:IrErrorType
|
VALUE_PARAMETER name:<set-?> index:0 type:IrErrorType
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
ERROR_CALL 'Unresolved reference: <Inapplicable(WRONG_RECEIVER): [kotlin/collections/setValue]>#' type=IrErrorType
|
ERROR_CALL 'Unresolved reference: <Inapplicable(INAPPLICABLE): [kotlin/collections/setValue]>#' type=IrErrorType
|
||||||
CONST Null type=kotlin.Nothing? value=null
|
CONST Null type=kotlin.Nothing? value=null
|
||||||
PROPERTY_REFERENCE 'public final test4: IrErrorType [delegated,var]' field='FIELD DELEGATE name:test4$delegate type:java.util.HashMap<kotlin.String, kotlin.Any> visibility:private [final,static]' getter='public final fun <get-test4> (): IrErrorType declared in <root>' setter=null type=kotlin.reflect.KProperty<*> origin=null
|
PROPERTY_REFERENCE 'public final test4: IrErrorType [delegated,var]' field='FIELD DELEGATE name:test4$delegate type:java.util.HashMap<kotlin.String, kotlin.Any> visibility:private [final,static]' getter='public final fun <get-test4> (): IrErrorType declared in <root>' setter=null type=kotlin.reflect.KProperty<*> origin=null
|
||||||
GET_VAR '<set-?>: IrErrorType declared in <root>.<set-test4>' type=IrErrorType origin=null
|
GET_VAR '<set-?>: IrErrorType declared in <root>.<set-test4>' type=IrErrorType origin=null
|
||||||
|
|||||||
@@ -86,14 +86,14 @@ FILE fqName:<root> fileName:/packageLevelProperties.kt
|
|||||||
correspondingProperty: PROPERTY name:test8 visibility:public modality:FINAL [delegated,var]
|
correspondingProperty: PROPERTY name:test8 visibility:public modality:FINAL [delegated,var]
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun <get-test8> (): IrErrorType declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun <get-test8> (): IrErrorType declared in <root>'
|
||||||
ERROR_CALL 'Unresolved reference: <Inapplicable(PARAMETER_MAPPING_ERROR): [kotlin/collections/getValue]>#' type=IrErrorType
|
ERROR_CALL 'Unresolved reference: <Ambiguity: getValue, [kotlin/collections/getValue, kotlin/collections/getValue, kotlin/collections/getValue]>#' type=IrErrorType
|
||||||
CONST Null type=kotlin.Nothing? value=null
|
CONST Null type=kotlin.Nothing? value=null
|
||||||
PROPERTY_REFERENCE 'public final test8: IrErrorType [delegated,var]' field='FIELD DELEGATE name:test8$delegate type:java.util.HashMap<kotlin.String, kotlin.Int> visibility:private [final,static]' getter=null setter=null type=kotlin.reflect.KProperty<*> origin=null
|
PROPERTY_REFERENCE 'public final test8: IrErrorType [delegated,var]' field='FIELD DELEGATE name:test8$delegate type:java.util.HashMap<kotlin.String, kotlin.Int> visibility:private [final,static]' getter=null setter=null type=kotlin.reflect.KProperty<*> origin=null
|
||||||
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-test8> visibility:public modality:FINAL <> (<set-?>:IrErrorType) returnType:kotlin.Unit
|
FUN DELEGATED_PROPERTY_ACCESSOR name:<set-test8> visibility:public modality:FINAL <> (<set-?>:IrErrorType) returnType:kotlin.Unit
|
||||||
correspondingProperty: PROPERTY name:test8 visibility:public modality:FINAL [delegated,var]
|
correspondingProperty: PROPERTY name:test8 visibility:public modality:FINAL [delegated,var]
|
||||||
VALUE_PARAMETER name:<set-?> index:0 type:IrErrorType
|
VALUE_PARAMETER name:<set-?> index:0 type:IrErrorType
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
ERROR_CALL 'Unresolved reference: <Inapplicable(WRONG_RECEIVER): [kotlin/collections/setValue]>#' type=IrErrorType
|
ERROR_CALL 'Unresolved reference: <Inapplicable(INAPPLICABLE): [kotlin/collections/setValue]>#' type=IrErrorType
|
||||||
CONST Null type=kotlin.Nothing? value=null
|
CONST Null type=kotlin.Nothing? value=null
|
||||||
PROPERTY_REFERENCE 'public final test8: IrErrorType [delegated,var]' field='FIELD DELEGATE name:test8$delegate type:java.util.HashMap<kotlin.String, kotlin.Int> visibility:private [final,static]' getter='public final fun <get-test8> (): IrErrorType declared in <root>' setter=null type=kotlin.reflect.KProperty<*> origin=null
|
PROPERTY_REFERENCE 'public final test8: IrErrorType [delegated,var]' field='FIELD DELEGATE name:test8$delegate type:java.util.HashMap<kotlin.String, kotlin.Int> visibility:private [final,static]' getter='public final fun <get-test8> (): IrErrorType declared in <root>' setter=null type=kotlin.reflect.KProperty<*> origin=null
|
||||||
GET_VAR '<set-?>: IrErrorType declared in <root>.<set-test8>' type=IrErrorType origin=null
|
GET_VAR '<set-?>: IrErrorType declared in <root>.<set-test8>' type=IrErrorType origin=null
|
||||||
|
|||||||
Reference in New Issue
Block a user