From faf1e17888325feaa21de282c866c563a1e351be Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Thu, 19 Nov 2015 18:10:01 +0300 Subject: [PATCH] Introduce TypeMappingMode.toGenericArgumentMode --- .../kotlin/codegen/state/JetTypeMapper.java | 7 ++----- .../kotlin/codegen/state/TypeMappingMode.kt | 14 +++++++++++--- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/JetTypeMapper.java index e4165aace04..3de8d55cc9a 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/JetTypeMapper.java @@ -440,10 +440,7 @@ public class JetTypeMapper { arrayElementType = boxType(mapType(memberType, mode)); if (signatureVisitor != null) { signatureVisitor.writeArrayType(); - TypeMappingMode newMode = mode.isForAnnotationParameter() ? - TypeMappingMode.GENERIC_TYPE_PARAMETER_FOR_ANNOTATION_PARAMETER : - TypeMappingMode.GENERIC_TYPE; - mapType(memberType, signatureVisitor, newMode, memberProjection.getProjectionKind()); + mapType(memberType, signatureVisitor, mode.toGenericArgumentMode()); signatureVisitor.writeArrayEnd(); } } @@ -649,7 +646,7 @@ public class JetTypeMapper { getEffectiveVariance(parameter.getVariance(), argument.getProjectionKind(), howThisTypeIsUsed, mode); signatureVisitor.writeTypeArgument(projectionKind); - mapType(argument.getType(), signatureVisitor, TypeMappingMode.GENERIC_TYPE); + mapType(argument.getType(), signatureVisitor, mode.toGenericArgumentMode()); signatureVisitor.writeTypeArgumentEnd(); } } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/TypeMappingMode.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/TypeMappingMode.kt index 93fc2fd76c7..449b9f05228 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/TypeMappingMode.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/TypeMappingMode.kt @@ -24,7 +24,9 @@ internal enum class TypeMappingMode( /** * kotlin.Int is mapped to I */ - DEFAULT(), + DEFAULT() { + override fun toGenericArgumentMode(): TypeMappingMode = GENERIC_TYPE + }, /** * kotlin.Int is mapped to Ljava/lang/Integer; */ @@ -33,15 +35,21 @@ internal enum class TypeMappingMode( * kotlin.Int is mapped to Ljava/lang/Integer; * No projections allowed in immediate arguments */ - SUPER_TYPE(needPrimitiveBoxing = true, writeDeclarationSiteProjections = false), + SUPER_TYPE(needPrimitiveBoxing = true, writeDeclarationSiteProjections = false) { + override fun toGenericArgumentMode(): TypeMappingMode = GENERIC_TYPE + }, /** * kotlin.reflect.KClass mapped to java.lang.Class * Other types mapped as DEFAULT */ - VALUE_FOR_ANNOTATION(isForAnnotationParameter = true), + VALUE_FOR_ANNOTATION(isForAnnotationParameter = true) { + override fun toGenericArgumentMode(): TypeMappingMode = GENERIC_TYPE_PARAMETER_FOR_ANNOTATION_PARAMETER + }, /** * kotlin.reflect.KClass mapped to java.lang.Class * Other types mapped as GENERIC_TYPE */ GENERIC_TYPE_PARAMETER_FOR_ANNOTATION_PARAMETER(isForAnnotationParameter = true, needPrimitiveBoxing = true); + + open fun toGenericArgumentMode(): TypeMappingMode = this }