Merge LazyJavaResolverContext and LazyJavaResolverContextWithTypes
This commit is contained in:
+2
-23
@@ -31,23 +31,7 @@ public class LazyJavaPackageFragmentProvider(
|
|||||||
val module: ModuleDescriptor
|
val module: ModuleDescriptor
|
||||||
) : PackageFragmentProvider {
|
) : PackageFragmentProvider {
|
||||||
|
|
||||||
private val c = LazyJavaResolverContext(
|
private val c = LazyJavaResolverContext(outerContext, this, FragmentClassResolver(), TypeParameterResolver.EMPTY)
|
||||||
this,
|
|
||||||
FragmentClassResolver(),
|
|
||||||
outerContext.storageManager,
|
|
||||||
outerContext.finder,
|
|
||||||
outerContext.kotlinClassFinder,
|
|
||||||
outerContext.deserializedDescriptorResolver,
|
|
||||||
outerContext.externalAnnotationResolver,
|
|
||||||
outerContext.externalSignatureResolver,
|
|
||||||
outerContext.errorReporter,
|
|
||||||
outerContext.methodSignatureChecker,
|
|
||||||
outerContext.javaResolverCache,
|
|
||||||
outerContext.javaPropertyInitializerEvaluator,
|
|
||||||
outerContext.samConversionResolver,
|
|
||||||
outerContext.sourceElementFactory,
|
|
||||||
outerContext.moduleClassResolver
|
|
||||||
)
|
|
||||||
|
|
||||||
private val packageFragments: MemoizedFunctionToNullable<FqName, LazyJavaPackageFragment> =
|
private val packageFragments: MemoizedFunctionToNullable<FqName, LazyJavaPackageFragment> =
|
||||||
c.storageManager.createMemoizedFunctionWithNullableValues {
|
c.storageManager.createMemoizedFunctionWithNullableValues {
|
||||||
@@ -67,12 +51,7 @@ public class LazyJavaPackageFragmentProvider(
|
|||||||
val packageFragment = getPackageFragment(fqName.parent())
|
val packageFragment = getPackageFragment(fqName.parent())
|
||||||
if (packageFragment == null) return@lambda null
|
if (packageFragment == null) return@lambda null
|
||||||
|
|
||||||
LazyJavaClassDescriptor(
|
LazyJavaClassDescriptor(c, packageFragment, fqName, jClass)
|
||||||
c.withTypes(TypeParameterResolver.EMPTY),
|
|
||||||
packageFragment,
|
|
||||||
fqName,
|
|
||||||
jClass
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getPackageFragment(fqName: FqName) = packageFragments(fqName)
|
private fun getPackageFragment(fqName: FqName) = packageFragments(fqName)
|
||||||
|
|||||||
+2
-2
@@ -25,7 +25,7 @@ import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames
|
|||||||
import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.resolveAnnotation
|
import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.resolveAnnotation
|
||||||
|
|
||||||
class LazyJavaAnnotations(
|
class LazyJavaAnnotations(
|
||||||
c: LazyJavaResolverContextWithTypes,
|
c: LazyJavaResolverContext,
|
||||||
val annotationOwner: JavaAnnotationOwner,
|
val annotationOwner: JavaAnnotationOwner,
|
||||||
private val extraLookup: (FqName) -> JavaAnnotation? = { null }
|
private val extraLookup: (FqName) -> JavaAnnotation? = { null }
|
||||||
) : Annotations {
|
) : Annotations {
|
||||||
@@ -48,7 +48,7 @@ class LazyJavaAnnotations(
|
|||||||
override fun isEmpty() = iterator().hasNext()
|
override fun isEmpty() = iterator().hasNext()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun LazyJavaResolverContextWithTypes.resolveAnnotations(annotationsOwner: JavaAnnotationOwner): Annotations
|
fun LazyJavaResolverContext.resolveAnnotations(annotationsOwner: JavaAnnotationOwner): Annotations
|
||||||
= LazyJavaAnnotations(this, annotationsOwner) { fqName -> externalAnnotationResolver.findExternalAnnotation(annotationsOwner, fqName) }
|
= LazyJavaAnnotations(this, annotationsOwner) { fqName -> externalAnnotationResolver.findExternalAnnotation(annotationsOwner, fqName) }
|
||||||
|
|
||||||
private fun GlobalJavaResolverContext.hasAnnotation(owner: JavaAnnotationOwner, annotationFqName: FqName): Boolean
|
private fun GlobalJavaResolverContext.hasAnnotation(owner: JavaAnnotationOwner, annotationFqName: FqName): Boolean
|
||||||
|
|||||||
+27
-64
@@ -26,6 +26,7 @@ import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver
|
|||||||
import org.jetbrains.jet.lang.resolve.kotlin.KotlinClassFinder
|
import org.jetbrains.jet.lang.resolve.kotlin.KotlinClassFinder
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaPropertyInitializerEvaluator
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaPropertyInitializerEvaluator
|
||||||
import org.jetbrains.jet.lang.resolve.java.sources.JavaSourceElementFactory
|
import org.jetbrains.jet.lang.resolve.java.sources.JavaSourceElementFactory
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaTypeParameterListOwner
|
||||||
|
|
||||||
open class GlobalJavaResolverContext(
|
open class GlobalJavaResolverContext(
|
||||||
val storageManager: StorageManager,
|
val storageManager: StorageManager,
|
||||||
@@ -44,72 +45,34 @@ open class GlobalJavaResolverContext(
|
|||||||
)
|
)
|
||||||
|
|
||||||
open class LazyJavaResolverContext(
|
open class LazyJavaResolverContext(
|
||||||
|
globalContext: GlobalJavaResolverContext,
|
||||||
val packageFragmentProvider: LazyJavaPackageFragmentProvider,
|
val packageFragmentProvider: LazyJavaPackageFragmentProvider,
|
||||||
val javaClassResolver: LazyJavaClassResolver,
|
val javaClassResolver: LazyJavaClassResolver,
|
||||||
storageManager: StorageManager,
|
|
||||||
finder: JavaClassFinder,
|
|
||||||
kotlinClassFinder: KotlinClassFinder,
|
|
||||||
deserializedDescriptorResolver: DeserializedDescriptorResolver,
|
|
||||||
externalAnnotationResolver: ExternalAnnotationResolver,
|
|
||||||
externalSignatureResolver: ExternalSignatureResolver,
|
|
||||||
errorReporter: ErrorReporter,
|
|
||||||
methodSignatureChecker: MethodSignatureChecker,
|
|
||||||
javaResolverCache: JavaResolverCache,
|
|
||||||
javaPropertyInitializerEvaluator: JavaPropertyInitializerEvaluator,
|
|
||||||
samConversionResolver: SamConversionResolver,
|
|
||||||
sourceElementFactory: JavaSourceElementFactory,
|
|
||||||
moduleClassResolver: ModuleClassResolver
|
|
||||||
) : GlobalJavaResolverContext(storageManager, finder, kotlinClassFinder, deserializedDescriptorResolver,
|
|
||||||
externalAnnotationResolver, externalSignatureResolver,
|
|
||||||
errorReporter, methodSignatureChecker, javaResolverCache, javaPropertyInitializerEvaluator,
|
|
||||||
samConversionResolver, sourceElementFactory, moduleClassResolver)
|
|
||||||
|
|
||||||
fun LazyJavaResolverContext.withTypes(
|
|
||||||
typeParameterResolver: TypeParameterResolver = TypeParameterResolver.EMPTY
|
|
||||||
) = LazyJavaResolverContextWithTypes(
|
|
||||||
packageFragmentProvider,
|
|
||||||
javaClassResolver,
|
|
||||||
storageManager,
|
|
||||||
finder,
|
|
||||||
kotlinClassFinder,
|
|
||||||
deserializedDescriptorResolver,
|
|
||||||
externalAnnotationResolver,
|
|
||||||
externalSignatureResolver,
|
|
||||||
errorReporter,
|
|
||||||
methodSignatureChecker,
|
|
||||||
javaResolverCache,
|
|
||||||
javaPropertyInitializerEvaluator,
|
|
||||||
samConversionResolver,
|
|
||||||
sourceElementFactory,
|
|
||||||
moduleClassResolver,
|
|
||||||
LazyJavaTypeResolver(this, typeParameterResolver),
|
|
||||||
typeParameterResolver
|
|
||||||
)
|
|
||||||
|
|
||||||
class LazyJavaResolverContextWithTypes(
|
|
||||||
packageFragmentProvider: LazyJavaPackageFragmentProvider,
|
|
||||||
javaClassResolver: LazyJavaClassResolver,
|
|
||||||
storageManager: StorageManager,
|
|
||||||
finder: JavaClassFinder,
|
|
||||||
kotlinClassFinder: KotlinClassFinder,
|
|
||||||
deserializedDescriptorResolver: DeserializedDescriptorResolver,
|
|
||||||
externalAnnotationResolver: ExternalAnnotationResolver,
|
|
||||||
externalSignatureResolver: ExternalSignatureResolver,
|
|
||||||
errorReporter: ErrorReporter,
|
|
||||||
methodSignatureChecker: MethodSignatureChecker,
|
|
||||||
javaResolverCache: JavaResolverCache,
|
|
||||||
javaPropertyInitializerEvaluator: JavaPropertyInitializerEvaluator,
|
|
||||||
samConversionResolver: SamConversionResolver,
|
|
||||||
sourceElementFactory: JavaSourceElementFactory,
|
|
||||||
moduleClassResolver: ModuleClassResolver,
|
|
||||||
val typeResolver: LazyJavaTypeResolver,
|
|
||||||
val typeParameterResolver: TypeParameterResolver
|
val typeParameterResolver: TypeParameterResolver
|
||||||
) : LazyJavaResolverContext(packageFragmentProvider, javaClassResolver, storageManager, finder, kotlinClassFinder,
|
) : GlobalJavaResolverContext(
|
||||||
deserializedDescriptorResolver, externalAnnotationResolver, externalSignatureResolver, errorReporter,
|
globalContext.storageManager,
|
||||||
methodSignatureChecker, javaResolverCache, javaPropertyInitializerEvaluator, samConversionResolver,
|
globalContext.finder,
|
||||||
sourceElementFactory, moduleClassResolver)
|
globalContext.kotlinClassFinder,
|
||||||
|
globalContext.deserializedDescriptorResolver,
|
||||||
|
globalContext.externalAnnotationResolver,
|
||||||
|
globalContext.externalSignatureResolver,
|
||||||
|
globalContext.errorReporter,
|
||||||
|
globalContext.methodSignatureChecker,
|
||||||
|
globalContext.javaResolverCache,
|
||||||
|
globalContext.javaPropertyInitializerEvaluator,
|
||||||
|
globalContext.samConversionResolver,
|
||||||
|
globalContext.sourceElementFactory,
|
||||||
|
globalContext.moduleClassResolver
|
||||||
|
) {
|
||||||
|
val typeResolver = LazyJavaTypeResolver(this, typeParameterResolver)
|
||||||
|
}
|
||||||
|
|
||||||
fun LazyJavaResolverContextWithTypes.child(
|
fun LazyJavaResolverContext.child(
|
||||||
|
typeParameterResolver: TypeParameterResolver
|
||||||
|
) = LazyJavaResolverContext(this, packageFragmentProvider, javaClassResolver, typeParameterResolver)
|
||||||
|
|
||||||
|
|
||||||
|
fun LazyJavaResolverContext.child(
|
||||||
containingDeclaration: DeclarationDescriptor,
|
containingDeclaration: DeclarationDescriptor,
|
||||||
typeParameters: Set<JavaTypeParameter>
|
typeParameterOwner: JavaTypeParameterListOwner
|
||||||
): LazyJavaResolverContextWithTypes = this.withTypes(LazyJavaTypeParameterResolver(this, containingDeclaration, typeParameters))
|
) = this.child(LazyJavaTypeParameterResolver(this, containingDeclaration, typeParameterOwner))
|
||||||
|
|||||||
+3
-3
@@ -19,7 +19,7 @@ package org.jetbrains.jet.lang.resolve.java.lazy.descriptors
|
|||||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor
|
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor
|
||||||
import org.jetbrains.jet.lang.types.*
|
import org.jetbrains.jet.lang.types.*
|
||||||
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor
|
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor
|
||||||
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaResolverContextWithTypes
|
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaResolverContext
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.*
|
import org.jetbrains.jet.lang.resolve.java.structure.*
|
||||||
import org.jetbrains.jet.lang.resolve.constants.*
|
import org.jetbrains.jet.lang.resolve.constants.*
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name
|
import org.jetbrains.jet.lang.resolve.name.Name
|
||||||
@@ -43,14 +43,14 @@ private object DEPRECATED_IN_JAVA : JavaLiteralAnnotationArgument {
|
|||||||
override val value: Any? = "Deprecated in Java"
|
override val value: Any? = "Deprecated in Java"
|
||||||
}
|
}
|
||||||
|
|
||||||
fun LazyJavaResolverContextWithTypes.resolveAnnotation(annotation: JavaAnnotation): LazyJavaAnnotationDescriptor? {
|
fun LazyJavaResolverContext.resolveAnnotation(annotation: JavaAnnotation): LazyJavaAnnotationDescriptor? {
|
||||||
val classId = annotation.getClassId()
|
val classId = annotation.getClassId()
|
||||||
if (classId == null || JvmAnnotationNames.isSpecialAnnotation(classId, !PLATFORM_TYPES)) return null
|
if (classId == null || JvmAnnotationNames.isSpecialAnnotation(classId, !PLATFORM_TYPES)) return null
|
||||||
return LazyJavaAnnotationDescriptor(this, annotation)
|
return LazyJavaAnnotationDescriptor(this, annotation)
|
||||||
}
|
}
|
||||||
|
|
||||||
class LazyJavaAnnotationDescriptor(
|
class LazyJavaAnnotationDescriptor(
|
||||||
private val c: LazyJavaResolverContextWithTypes,
|
private val c: LazyJavaResolverContext,
|
||||||
val javaAnnotation : JavaAnnotation
|
val javaAnnotation : JavaAnnotation
|
||||||
) : AnnotationDescriptor {
|
) : AnnotationDescriptor {
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -23,7 +23,7 @@ import org.jetbrains.jet.lang.descriptors.impl.ClassDescriptorBase
|
|||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope
|
||||||
import org.jetbrains.jet.lang.types.JetType
|
import org.jetbrains.jet.lang.types.JetType
|
||||||
import org.jetbrains.jet.lang.types.TypeConstructor
|
import org.jetbrains.jet.lang.types.TypeConstructor
|
||||||
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaResolverContextWithTypes
|
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaResolverContext
|
||||||
import org.jetbrains.jet.lang.resolve.java.lazy.child
|
import org.jetbrains.jet.lang.resolve.java.lazy.child
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.TypeUsage
|
import org.jetbrains.jet.lang.resolve.java.resolver.TypeUsage
|
||||||
import org.jetbrains.jet.lang.resolve.java.lazy.resolveAnnotations
|
import org.jetbrains.jet.lang.resolve.java.lazy.resolveAnnotations
|
||||||
@@ -36,14 +36,14 @@ import org.jetbrains.jet.lang.descriptors.annotations.Annotations
|
|||||||
import org.jetbrains.jet.lang.types.AbstractClassTypeConstructor
|
import org.jetbrains.jet.lang.types.AbstractClassTypeConstructor
|
||||||
|
|
||||||
class LazyJavaClassDescriptor(
|
class LazyJavaClassDescriptor(
|
||||||
private val outerC: LazyJavaResolverContextWithTypes,
|
private val outerC: LazyJavaResolverContext,
|
||||||
containingDeclaration: DeclarationDescriptor,
|
containingDeclaration: DeclarationDescriptor,
|
||||||
internal val fqName: FqName,
|
internal val fqName: FqName,
|
||||||
private val jClass: JavaClass
|
private val jClass: JavaClass
|
||||||
) : ClassDescriptorBase(outerC.storageManager, containingDeclaration, fqName.shortName(),
|
) : ClassDescriptorBase(outerC.storageManager, containingDeclaration, fqName.shortName(),
|
||||||
outerC.sourceElementFactory.source(jClass)), JavaClassDescriptor {
|
outerC.sourceElementFactory.source(jClass)), JavaClassDescriptor {
|
||||||
|
|
||||||
private val c: LazyJavaResolverContextWithTypes = outerC.child(this, jClass.getTypeParameters().toSet());
|
private val c: LazyJavaResolverContext = outerC.child(this, jClass);
|
||||||
|
|
||||||
{
|
{
|
||||||
c.javaResolverCache.recordClass(jClass, this)
|
c.javaResolverCache.recordClass(jClass, this)
|
||||||
|
|||||||
+2
-2
@@ -19,7 +19,7 @@ package org.jetbrains.jet.lang.resolve.java.lazy.descriptors
|
|||||||
import org.jetbrains.jet.lang.descriptors.*
|
import org.jetbrains.jet.lang.descriptors.*
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name
|
import org.jetbrains.jet.lang.resolve.name.Name
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.*
|
import org.jetbrains.jet.lang.resolve.java.structure.*
|
||||||
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaResolverContextWithTypes
|
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaResolverContext
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.ValueParameterDescriptorImpl
|
import org.jetbrains.jet.lang.descriptors.impl.ValueParameterDescriptorImpl
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.TypeUsage
|
import org.jetbrains.jet.lang.resolve.java.resolver.TypeUsage
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.ConstructorDescriptorImpl
|
import org.jetbrains.jet.lang.descriptors.impl.ConstructorDescriptorImpl
|
||||||
@@ -38,7 +38,7 @@ import org.jetbrains.jet.lang.types.JetType
|
|||||||
import org.jetbrains.jet.lang.resolve.scopes.DescriptorKindFilter
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorKindFilter
|
||||||
|
|
||||||
public class LazyJavaClassMemberScope(
|
public class LazyJavaClassMemberScope(
|
||||||
c: LazyJavaResolverContextWithTypes,
|
c: LazyJavaResolverContext,
|
||||||
containingDeclaration: ClassDescriptor,
|
containingDeclaration: ClassDescriptor,
|
||||||
private val jClass: JavaClass
|
private val jClass: JavaClass
|
||||||
) : LazyJavaMemberScope(c, containingDeclaration) {
|
) : LazyJavaMemberScope(c, containingDeclaration) {
|
||||||
|
|||||||
+6
-5
@@ -22,7 +22,7 @@ import org.jetbrains.jet.lang.resolve.name.Name
|
|||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaField
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaField
|
||||||
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaResolverContextWithTypes
|
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaResolverContext
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaMethodDescriptor
|
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaMethodDescriptor
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils
|
||||||
import org.jetbrains.jet.lang.resolve.java.lazy.child
|
import org.jetbrains.jet.lang.resolve.java.lazy.child
|
||||||
@@ -48,7 +48,7 @@ import org.jetbrains.jet.lang.resolve.scopes.DescriptorKindFilter
|
|||||||
import org.jetbrains.jet.lang.resolve.scopes.DescriptorKindExclude.NonExtensions
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorKindExclude.NonExtensions
|
||||||
|
|
||||||
public abstract class LazyJavaMemberScope(
|
public abstract class LazyJavaMemberScope(
|
||||||
protected val c: LazyJavaResolverContextWithTypes,
|
protected val c: LazyJavaResolverContext,
|
||||||
private val containingDeclaration: DeclarationDescriptor
|
private val containingDeclaration: DeclarationDescriptor
|
||||||
) : JetScope {
|
) : JetScope {
|
||||||
// this lazy value is not used at all in LazyPackageFragmentScopeForJavaPackage because we do not use caching there
|
// this lazy value is not used at all in LazyPackageFragmentScopeForJavaPackage because we do not use caching there
|
||||||
@@ -115,7 +115,7 @@ public abstract class LazyJavaMemberScope(
|
|||||||
containingDeclaration, annotations, method.getName(), c.sourceElementFactory.source(method)
|
containingDeclaration, annotations, method.getName(), c.sourceElementFactory.source(method)
|
||||||
)
|
)
|
||||||
|
|
||||||
val c = c.child(functionDescriptorImpl, method.getTypeParameters().toSet())
|
val c = c.child(functionDescriptorImpl, method)
|
||||||
|
|
||||||
val methodTypeParameters = method.getTypeParameters().map { p -> c.typeParameterResolver.resolveTypeParameter(p)!! }
|
val methodTypeParameters = method.getTypeParameters().map { p -> c.typeParameterResolver.resolveTypeParameter(p)!! }
|
||||||
val valueParameters = resolveValueParameters(c, functionDescriptorImpl, method.getValueParameters())
|
val valueParameters = resolveValueParameters(c, functionDescriptorImpl, method.getValueParameters())
|
||||||
@@ -155,9 +155,10 @@ public abstract class LazyJavaMemberScope(
|
|||||||
protected class ResolvedValueParameters(val descriptors: List<ValueParameterDescriptor>, val hasSynthesizedNames: Boolean)
|
protected class ResolvedValueParameters(val descriptors: List<ValueParameterDescriptor>, val hasSynthesizedNames: Boolean)
|
||||||
|
|
||||||
protected fun resolveValueParameters(
|
protected fun resolveValueParameters(
|
||||||
c: LazyJavaResolverContextWithTypes,
|
c: LazyJavaResolverContext,
|
||||||
function: FunctionDescriptor,
|
function: FunctionDescriptor,
|
||||||
jValueParameters: List<JavaValueParameter>): ResolvedValueParameters {
|
jValueParameters: List<JavaValueParameter>
|
||||||
|
): ResolvedValueParameters {
|
||||||
var synthesizedNames = false
|
var synthesizedNames = false
|
||||||
val descriptors = jValueParameters.withIndices().map { pair ->
|
val descriptors = jValueParameters.withIndices().map { pair ->
|
||||||
val (index, javaParameter) = pair
|
val (index, javaParameter) = pair
|
||||||
|
|||||||
+1
-3
@@ -19,15 +19,13 @@ package org.jetbrains.jet.lang.resolve.java.lazy.descriptors
|
|||||||
import org.jetbrains.jet.lang.descriptors.*
|
import org.jetbrains.jet.lang.descriptors.*
|
||||||
import org.jetbrains.jet.lang.resolve.name.*
|
import org.jetbrains.jet.lang.resolve.name.*
|
||||||
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaResolverContext
|
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaResolverContext
|
||||||
import org.jetbrains.jet.lang.resolve.java.lazy.withTypes
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod
|
||||||
import org.jetbrains.jet.lang.types.JetType
|
import org.jetbrains.jet.lang.types.JetType
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.SamConstructorDescriptor
|
|
||||||
|
|
||||||
public abstract class LazyJavaStaticScope(
|
public abstract class LazyJavaStaticScope(
|
||||||
c: LazyJavaResolverContext,
|
c: LazyJavaResolverContext,
|
||||||
descriptor: ClassOrPackageFragmentDescriptor
|
descriptor: ClassOrPackageFragmentDescriptor
|
||||||
) : LazyJavaMemberScope(c.withTypes(), descriptor) {
|
) : LazyJavaMemberScope(c, descriptor) {
|
||||||
|
|
||||||
override fun getDispatchReceiverParameter() = null
|
override fun getDispatchReceiverParameter() = null
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -23,12 +23,12 @@ import org.jetbrains.jet.lang.types.JetType
|
|||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaTypeParameter
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaTypeParameter
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns
|
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.TypeUsage
|
import org.jetbrains.jet.lang.resolve.java.resolver.TypeUsage
|
||||||
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaResolverContextWithTypes
|
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaResolverContext
|
||||||
import org.jetbrains.jet.lang.resolve.java.lazy.types.toAttributes
|
import org.jetbrains.jet.lang.resolve.java.lazy.types.toAttributes
|
||||||
import org.jetbrains.jet.lang.descriptors.SourceElement
|
import org.jetbrains.jet.lang.descriptors.SourceElement
|
||||||
|
|
||||||
class LazyJavaTypeParameterDescriptor(
|
class LazyJavaTypeParameterDescriptor(
|
||||||
private val c: LazyJavaResolverContextWithTypes,
|
private val c: LazyJavaResolverContext,
|
||||||
public val javaTypeParameter: JavaTypeParameter,
|
public val javaTypeParameter: JavaTypeParameter,
|
||||||
containingDeclaration: DeclarationDescriptor
|
containingDeclaration: DeclarationDescriptor
|
||||||
) : AbstractLazyTypeParameterDescriptor(
|
) : AbstractLazyTypeParameterDescriptor(
|
||||||
|
|||||||
+9
-11
@@ -25,6 +25,7 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
|
|||||||
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader
|
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass
|
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass
|
||||||
import org.jetbrains.jet.lang.resolve.name.ClassId
|
import org.jetbrains.jet.lang.resolve.name.ClassId
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaTypeParameterListOwner
|
||||||
|
|
||||||
//TODO: (module refactoring) usages of this interface should be replaced by ModuleClassResolver
|
//TODO: (module refactoring) usages of this interface should be replaced by ModuleClassResolver
|
||||||
trait LazyJavaClassResolver {
|
trait LazyJavaClassResolver {
|
||||||
@@ -42,21 +43,18 @@ trait TypeParameterResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class LazyJavaTypeParameterResolver(
|
class LazyJavaTypeParameterResolver(
|
||||||
val c: LazyJavaResolverContextWithTypes,
|
private val c: LazyJavaResolverContext,
|
||||||
private val containingDeclaration: DeclarationDescriptor,
|
private val containingDeclaration: DeclarationDescriptor,
|
||||||
private val typeParameters: Set<JavaTypeParameter>
|
typeParameterOwner: JavaTypeParameterListOwner
|
||||||
) : TypeParameterResolver {
|
) : TypeParameterResolver {
|
||||||
|
private val typeParameters = typeParameterOwner.getTypeParameters().toSet()
|
||||||
|
|
||||||
private val resolve = c.storageManager.createMemoizedFunctionWithNullableValues {
|
private val resolve = c.storageManager.createMemoizedFunctionWithNullableValues {
|
||||||
(javaTypeParameter: JavaTypeParameter) ->
|
(javaTypeParameter: JavaTypeParameter) ->
|
||||||
if (javaTypeParameter in typeParameters)
|
if (javaTypeParameter in typeParameters)
|
||||||
LazyJavaTypeParameterDescriptor(
|
LazyJavaTypeParameterDescriptor(c.child(this), javaTypeParameter, containingDeclaration)
|
||||||
c.withTypes(this),
|
else null
|
||||||
javaTypeParameter,
|
}
|
||||||
containingDeclaration
|
|
||||||
)
|
|
||||||
else null
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun resolveTypeParameter(javaTypeParameter: JavaTypeParameter): TypeParameterDescriptor? {
|
override fun resolveTypeParameter(javaTypeParameter: JavaTypeParameter): TypeParameterDescriptor? {
|
||||||
return resolve(javaTypeParameter) ?: c.typeParameterResolver.resolveTypeParameter(javaTypeParameter)
|
return resolve(javaTypeParameter) ?: c.typeParameterResolver.resolveTypeParameter(javaTypeParameter)
|
||||||
|
|||||||
Reference in New Issue
Block a user