From 2f2332bfe2b9659758ca6fcd88378fafa8dbcd6f Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 24 Oct 2013 19:50:02 +0400 Subject: [PATCH] No need for applyNullability() --- .../java/lazy/types/LazyJavaTypeResolver.kt | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/types/LazyJavaTypeResolver.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/types/LazyJavaTypeResolver.kt index fdf986519d6..05e9c5fd798 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/types/LazyJavaTypeResolver.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/types/LazyJavaTypeResolver.kt @@ -44,8 +44,7 @@ class LazyJavaTypeResolver( private val c: LazyJavaResolverContext, private val typeParameterResolver: TypeParameterResolver ) { - private val NOT_NULL_POSITIONS = setOf(TYPE_ARGUMENT, UPPER_BOUND, SUPERTYPE_ARGUMENT, SUPERTYPE) - + public fun transformJavaType(javaType: JavaType, attr: JavaTypeAttributes): JetType { return when (javaType) { is JavaPrimitiveType -> { @@ -54,8 +53,8 @@ class LazyJavaTypeResolver( assert(jetType != null, "Primitive type is not found: " + canonicalText) return jetType!! } - is JavaClassifierType -> LazyJavaClassifierType(javaType, attr).applyNullablility(attr) - is JavaArrayType -> transformArrayType(javaType, attr).applyNullablility(attr) + is JavaClassifierType -> LazyJavaClassifierType(javaType, attr) + is JavaArrayType -> transformArrayType(javaType, attr) else -> throw UnsupportedOperationException("Unsupported type: " + javaType) } } @@ -74,13 +73,6 @@ class LazyJavaTypeResolver( return TypeUtils.makeNullable(KotlinBuiltIns.getInstance().getArrayType(projectionKind, componentType)) } - private fun JetType.applyNullablility(attr: JavaTypeAttributes): JetType { - if (attr.howThisTypeIsUsed in NOT_NULL_POSITIONS) { - return TypeUtils.makeNotNullable(this) - } - return this - } - private fun transformToTypeProjection( javaType: JavaType, attr: JavaTypeAttributes, @@ -174,7 +166,12 @@ class LazyJavaTypeResolver( return (descriptor as ClassDescriptor).getMemberScope(getArguments()) } - private val _nullable = c.storageManager.createLazyValue { !attr.isMarkedNotNull } + private val _nullable = c.storageManager.createLazyValue { + !attr.isMarkedNotNull && + // 'L extends List' in Java is a List in Kotlin, not a List + // nullability will be taken care of in individual member signatures + (attr.howThisTypeIsUsed !in setOf(TYPE_ARGUMENT, UPPER_BOUND, SUPERTYPE_ARGUMENT, SUPERTYPE)) + } override fun isNullable(): Boolean = _nullable() } }