Support properties reificaton

This commit is contained in:
Mikhael Bogdanov
2019-04-08 10:37:00 +02:00
parent 944c200a5d
commit 2a3a9bb5fc
5 changed files with 3 additions and 6 deletions
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.backend.jvm.codegen package org.jetbrains.kotlin.backend.jvm.codegen
import org.jetbrains.kotlin.backend.common.descriptors.propertyIfAccessor
import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
import org.jetbrains.kotlin.backend.jvm.intrinsics.ComparisonIntrinsic import org.jetbrains.kotlin.backend.jvm.intrinsics.ComparisonIntrinsic
import org.jetbrains.kotlin.backend.jvm.intrinsics.IrIntrinsicFunction import org.jetbrains.kotlin.backend.jvm.intrinsics.IrIntrinsicFunction
@@ -1283,9 +1284,9 @@ class ExpressionCodegen(
if (memberAccessExpression.typeArgumentsCount == 0) { if (memberAccessExpression.typeArgumentsCount == 0) {
//avoid ambiguity with type constructor type parameters //avoid ambiguity with type constructor type parameters
emptyMap() emptyMap()
} else descriptor.original.typeParameters.keysToMap { } else (descriptor.propertyIfAccessor as? CallableDescriptor)?.original?.typeParameters?.keysToMap {
memberAccessExpression.getTypeArgumentOrDefault(it) memberAccessExpression.getTypeArgumentOrDefault(it)
} } ?: emptyMap()
val mappings = TypeParameterMappings() val mappings = TypeParameterMappings()
for (entry in typeArguments.entries) { for (entry in typeArguments.entries) {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// WITH_RUNTIME // WITH_RUNTIME
// WITH_REFLECT // WITH_REFLECT
// FILE: 1.kt // FILE: 1.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// WITH_RUNTIME // WITH_RUNTIME
// WITH_REFLECT // WITH_REFLECT
// FILE: 1.kt // FILE: 1.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// WITH_RUNTIME // WITH_RUNTIME
// FILE: 1.kt // FILE: 1.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// FILE: 1.kt // FILE: 1.kt
// WITH_REFLECT // WITH_REFLECT