From 13a73b67de410902140d38269cbfc2b3f405151a Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Thu, 12 Mar 2020 15:07:29 +0300 Subject: [PATCH] [IR] Fix IrPropertyReference for delegated property - Make sure that property CR passed to `getValue` doesn't have type arguments. --- .../kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt | 2 +- compiler/testData/ir/irText/expressions/genericPropertyRef.txt | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt index ac09e677cc6..df37c85d9b9 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt @@ -478,7 +478,7 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St return IrPropertyReferenceImpl( startOffset, endOffset, type.toIrType(), originalSymbol, - propertyDescriptor.typeParametersCount, + if (typeArguments != null) propertyDescriptor.typeParametersCount else 0, getFieldForPropertyReference(originalProperty), originalGetter?.let { context.symbolTable.referenceSimpleFunction(it) }, originalSetter?.let { context.symbolTable.referenceSimpleFunction(it) }, diff --git a/compiler/testData/ir/irText/expressions/genericPropertyRef.txt b/compiler/testData/ir/irText/expressions/genericPropertyRef.txt index 7c57187746c..82aa48b82e5 100644 --- a/compiler/testData/ir/irText/expressions/genericPropertyRef.txt +++ b/compiler/testData/ir/irText/expressions/genericPropertyRef.txt @@ -79,7 +79,6 @@ FILE fqName: fileName:/genericPropertyRef.kt $this: GET_FIELD 'FIELD PROPERTY_DELEGATE name:additionalText$delegate type:.DVal visibility:private [final,static]' type=.DVal origin=null t: GET_VAR ': .Value.> declared in .' type=.Value.> origin=null p: PROPERTY_REFERENCE 'public final additionalText: kotlin.Int [delegated,val]' field=null getter='public final fun (): kotlin.Int declared in ' setter=null type=kotlin.reflect.KProperty1<.Value.>, kotlin.Int> origin=PROPERTY_REFERENCE_FOR_DELEGATE - <1>: PROPERTY name:additionalValue visibility:public modality:FINAL [delegated,val] FIELD PROPERTY_DELEGATE name:additionalValue$delegate type:.DVal visibility:private [final,static] EXPRESSION_BODY @@ -95,7 +94,6 @@ FILE fqName: fileName:/genericPropertyRef.kt $this: GET_FIELD 'FIELD PROPERTY_DELEGATE name:additionalValue$delegate type:.DVal visibility:private [final,static]' type=.DVal origin=null t: GET_VAR ': .Value.> declared in .' type=.Value.> origin=null p: PROPERTY_REFERENCE 'public final additionalValue: kotlin.Int [delegated,val]' field=null getter='public final fun (): kotlin.Int declared in ' setter=null type=kotlin.reflect.KProperty1<.Value.>, kotlin.Int> origin=PROPERTY_REFERENCE_FOR_DELEGATE - <1>: CLASS CLASS name:DVal modality:FINAL visibility:public superTypes:[kotlin.Any] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.DVal CONSTRUCTOR visibility:public <> (kmember:kotlin.Any) returnType:.DVal [primary]