diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt index 0b5dc74d2b4..ac5043f29d9 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt @@ -35,7 +35,6 @@ import org.jetbrains.jet.lang.resolve.java.JavaVisibilities import org.jetbrains.jet.lang.resolve.java.descriptor.JavaConstructorDescriptor import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils import org.jetbrains.jet.lang.types.JetType -import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.LazyJavaMemberScope.MethodSignatureData public class LazyJavaClassMemberScope( c: LazyJavaResolverContextWithTypes, @@ -97,7 +96,7 @@ public class LazyJavaClassMemberScope( propagated.getReceiverType(), propagated.getValueParameters(), propagated.getTypeParameters(), propagated.hasStableParameterNames()) - return MethodSignatureData(effectiveSignature, superFunctions, propagated.getErrors() + effectiveSignature.getErrors()) + return LazyJavaMemberScope.MethodSignatureData(effectiveSignature, superFunctions, propagated.getErrors() + effectiveSignature.getErrors()) } private fun resolveConstructor(constructor: JavaConstructor): JavaConstructorDescriptor { diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt index e95324fa55f..3eb9cc1c0f4 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt @@ -60,9 +60,7 @@ public abstract class LazyJavaMemberScope( override fun getContainingDeclaration() = containingDeclaration - protected val memberIndex: NotNullLazyValue = c.storageManager.createLazyValue { - computeMemberIndex() - } + protected val memberIndex: NotNullLazyValue = c.storageManager.createLazyValue { computeMemberIndex() } protected abstract fun computeMemberIndex(): MemberIndex @@ -71,7 +69,9 @@ public abstract class LazyJavaMemberScope( protected abstract fun getDispatchReceiverParameter(): ReceiverParameterDescriptor? - private val functions = c.storageManager.createMemoizedFunction {(name: Name): Collection -> + private val functions = c.storageManager.createMemoizedFunction { + (name: Name): Collection + -> val result = LinkedHashSet() for (method in memberIndex().findMethodsByName(name)) { @@ -92,14 +92,17 @@ public abstract class LazyJavaMemberScope( result.toReadOnlyList() } - data class MethodSignatureData( + protected data class MethodSignatureData( val effectiveSignature: ExternalSignatureResolver.AlternativeMethodSignature, val superFunctions: List, val errors: List ) - abstract fun resolveMethodSignature(method: JavaMethod, methodTypeParameters: List, - returnType: JetType, valueParameters: ResolvedValueParameters): MethodSignatureData + protected abstract fun resolveMethodSignature( + method: JavaMethod, + methodTypeParameters: List, + returnType: JetType, + valueParameters: ResolvedValueParameters): MethodSignatureData fun resolveMethodToFunctionDescriptor(method: JavaMethod, record: Boolean = true): JavaMethodDescriptor { @@ -146,14 +149,13 @@ public abstract class LazyJavaMemberScope( } protected class ResolvedValueParameters(val descriptors: List, val hasSynthesizedNames: Boolean) + protected fun resolveValueParameters( c: LazyJavaResolverContextWithTypes, function: FunctionDescriptor, - jValueParameters: List - ): ResolvedValueParameters { + jValueParameters: List): ResolvedValueParameters { var synthesizedNames = false - val descriptors = jValueParameters.withIndices().map { - pair -> + val descriptors = jValueParameters.withIndices().map { pair -> val (index, javaParameter) = pair val annotations = c.resolveAnnotations(javaParameter) @@ -161,16 +163,17 @@ public abstract class LazyJavaMemberScope( val (outType, varargElementType) = if (javaParameter.isVararg()) { val paramType = javaParameter.getType() - assert (paramType is JavaArrayType, "Vararg parameter should be an array: $paramType") + assert (paramType is JavaArrayType) { "Vararg parameter should be an array: $paramType" } val arrayType = c.typeResolver.transformArrayType(paramType as JavaArrayType, typeUsage, true) val outType = if (PLATFORM_TYPES) arrayType else TypeUtils.makeNotNullable(arrayType) - Pair(outType, KotlinBuiltIns.getInstance().getArrayElementType(outType)) + outType to KotlinBuiltIns.getInstance().getArrayElementType(outType) } else { val jetType = c.typeResolver.transformJavaType(javaParameter.getType(), typeUsage) if (!PLATFORM_TYPES && jetType.isNullable() && c.hasNotNullAnnotation(javaParameter)) - Pair(TypeUtils.makeNotNullable(jetType), null) - else Pair(jetType, null) + TypeUtils.makeNotNullable(jetType) to null + else + jetType to null } val name = if (function.getName().asString() == "equals" && @@ -291,11 +294,8 @@ public abstract class LazyJavaMemberScope( val result = LinkedHashSet() for (name in getAllClassNames()) { - val descriptor = getClassifier(name) - if (descriptor != null) { - // Null signifies that a class found in Java is not present in Kotlin (e.g. package class) - result.add(descriptor) - } + // Null signifies that a class found in Java is not present in Kotlin (e.g. package class) + result.addIfNotNull(getClassifier(name)) } for (name in getAllFunctionNames()) { diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt index 9db97439cca..99bca640fd0 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt @@ -29,7 +29,6 @@ import org.jetbrains.jet.lang.resolve.java.PackageClassUtils import org.jetbrains.jet.lang.resolve.scopes.JetScope import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod import org.jetbrains.jet.lang.types.JetType -import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.LazyJavaMemberScope.MethodSignatureData import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass import org.jetbrains.jet.lang.resolve.DescriptorFactory.* import org.jetbrains.jet.utils.addIfNotNull @@ -53,7 +52,7 @@ public abstract class LazyJavaStaticScope( ): LazyJavaMemberScope.MethodSignatureData { val effectiveSignature = c.externalSignatureResolver.resolveAlternativeMethodSignature( method, false, returnType, null, valueParameters.descriptors, methodTypeParameters, false) - return MethodSignatureData(effectiveSignature, listOf(), effectiveSignature.getErrors()) + return LazyJavaMemberScope.MethodSignatureData(effectiveSignature, listOf(), effectiveSignature.getErrors()) } override fun computeNonDeclaredProperties(name: Name, result: MutableCollection) { @@ -80,8 +79,7 @@ public class LazyPackageFragmentScopeForJavaPackage( c.deserializedDescriptorResolver.createKotlinPackageScope(packageFragment, kotlinBinaryClass) ?: JetScope.Empty } - private val classes = c.storageManager.createMemoizedFunctionWithNullableValues { - name -> + private val classes = c.storageManager.createMemoizedFunctionWithNullableValues { name -> val classId = ClassId(packageFragment.fqName, SpecialNames.safeIdentifier(name)) val (jClass, kClass) = this.c.findClassInJava(classId) if (kClass != null) @@ -90,8 +88,9 @@ public class LazyPackageFragmentScopeForJavaPackage( null else { val classDescriptor = this.c.javaClassResolver.resolveClass(jClass) - assert(classDescriptor == null || classDescriptor.getContainingDeclaration() == packageFragment, - "Wrong package fragment for $classDescriptor, expected $packageFragment") + assert(classDescriptor == null || classDescriptor.getContainingDeclaration() == packageFragment) { + "Wrong package fragment for $classDescriptor, expected $packageFragment" + } classDescriptor } } @@ -140,13 +139,13 @@ public class LazyJavaStaticClassScope( ) : LazyJavaStaticScope(c, descriptor) { override fun computeMemberIndex(): MemberIndex { - val delegate = ClassMemberIndex(jClass) { m -> m.isStatic() } + val delegate = ClassMemberIndex(jClass) { it.isStatic() } return object : MemberIndex by delegate { override fun getAllMethodNames(): Collection { // Should be a super call, but KT-2860 return delegate.getAllMethodNames() + // For SAM-constructors - jClass.getInnerClasses().map { c -> c.getName() } + jClass.getInnerClasses().map { it.getName() } } } }