Introduced lazy type and some related optimizations.

This commit is contained in:
Evgeny Gerashchenko
2014-01-15 20:14:04 +04:00
parent 0155bf0189
commit 292f0e4a38
8 changed files with 36 additions and 11 deletions
@@ -25,7 +25,7 @@ import org.jetbrains.jet.lang.types.JetTypeImpl
import org.jetbrains.jet.lang.types.TypeConstructor
import org.jetbrains.jet.lang.types.TypeProjection
import org.jetbrains.jet.lang.resolve.scopes.JetScope
import org.jetbrains.jet.lang.resolve.java.lazy.types.LazyType
import org.jetbrains.jet.lang.resolve.java.lazy.types.LazyJavaType
import org.jetbrains.jet.utils.valuesToMap
import org.jetbrains.jet.utils.keysToMap
import org.jetbrains.jet.utils.keysToMapExceptNulls
@@ -151,7 +151,7 @@ class LazyJavaAnnotationDescriptor(
val arguments = listOf(TypeProjectionImpl(`type`))
val javaClassObjectType = object : LazyType(c.storageManager) {
val javaClassObjectType = object : LazyJavaType(c.storageManager) {
override fun computeTypeConstructor() = jlClass.getTypeConstructor()
override fun computeArguments() = arguments
override fun computeMemberScope() = jlClass.getMemberScope(arguments)
@@ -24,8 +24,9 @@ import org.jetbrains.jet.lang.resolve.scopes.JetScope
import org.jetbrains.jet.lang.types.AbstractJetType
import org.jetbrains.jet.lang.types.ErrorUtils
import org.jetbrains.kotlin.util.inn
import org.jetbrains.jet.lang.types.LazyType
abstract class LazyType(storageManager: StorageManager) : AbstractJetType() {
abstract class LazyJavaType(storageManager: StorageManager) : AbstractJetType(), LazyType {
private val _typeConstructor = storageManager.createLazyValue {computeTypeConstructor()}
override fun getConstructor(): TypeConstructor = _typeConstructor()
@@ -88,7 +88,7 @@ class LazyJavaTypeResolver(
private inner class LazyJavaClassifierType(
private val javaType: JavaClassifierType,
private val attr: JavaTypeAttributes
) : LazyType(c.storageManager) {
) : LazyJavaType(c.storageManager) {
private val classifier = c.storageManager.createNullableLazyValue { javaType.getClassifier() }