diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/components/ExternalSignatureResolver.java b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/components/ExternalSignatureResolver.java index badeddbdb6a..e5cde880543 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/components/ExternalSignatureResolver.java +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/components/ExternalSignatureResolver.java @@ -60,7 +60,7 @@ public interface ExternalSignatureResolver { private final boolean hasStableParameterNames; public AlternativeMethodSignature( - @Nullable KotlinType returnType, + @NotNull KotlinType returnType, @Nullable KotlinType receiverType, @NotNull List valueParameters, @NotNull List typeParameters, @@ -75,7 +75,7 @@ public interface ExternalSignatureResolver { this.hasStableParameterNames = hasStableParameterNames; } - @Nullable + @NotNull public KotlinType getReturnType() { return returnType; } diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt index 91df9bef9f6..971bb1f6e7b 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt @@ -30,7 +30,6 @@ import org.jetbrains.kotlin.load.java.BuiltinMethodsWithDifferentJvmName.sameAsR import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature.sameAsBuiltinMethodWithErasedValueParameters import org.jetbrains.kotlin.load.java.BuiltinSpecialProperties.getBuiltinSpecialPropertyGetterName import org.jetbrains.kotlin.load.java.components.DescriptorResolverUtils -import org.jetbrains.kotlin.load.java.components.ExternalSignatureResolver import org.jetbrains.kotlin.load.java.components.TypeUsage import org.jetbrains.kotlin.load.java.descriptors.JavaConstructorDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor @@ -421,12 +420,15 @@ public class LazyJavaClassMemberScope( override fun resolveMethodSignature( method: JavaMethod, methodTypeParameters: List, returnType: KotlinType, - valueParameters: LazyJavaScope.ResolvedValueParameters + valueParameters: List ): LazyJavaScope.MethodSignatureData { val propagated = c.components.externalSignatureResolver.resolvePropagatedSignature( - method, ownerDescriptor, returnType, null, valueParameters.descriptors, methodTypeParameters + method, ownerDescriptor, returnType, null, valueParameters, methodTypeParameters + ) + return LazyJavaScope.MethodSignatureData( + propagated.returnType, propagated.receiverType, propagated.valueParameters, propagated.typeParameters, + propagated.hasStableParameterNames(), propagated.errors ) - return LazyJavaScope.MethodSignatureData(propagated, propagated.errors) } private fun hasOverriddenBuiltinFunctionWithErasedValueParameters( diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaScope.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaScope.kt index 6bdd550edec..d0b6d879a3f 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaScope.kt @@ -23,7 +23,6 @@ import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl import org.jetbrains.kotlin.incremental.components.LookupLocation import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.incremental.record -import org.jetbrains.kotlin.load.java.components.ExternalSignatureResolver import org.jetbrains.kotlin.load.java.components.TypeUsage import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaPropertyDescriptor @@ -97,7 +96,11 @@ public abstract class LazyJavaScope(protected val c: LazyJavaResolverContext) : open protected fun JavaMethodDescriptor.isVisibleAsFunction() = true protected data class MethodSignatureData( - val effectiveSignature: ExternalSignatureResolver.AlternativeMethodSignature, + val returnType: KotlinType, + val receiverType: KotlinType?, + val valueParameters: List, + val typeParameters: List, + val hasStableParameterNames: Boolean, val errors: List ) @@ -105,7 +108,8 @@ public abstract class LazyJavaScope(protected val c: LazyJavaResolverContext) : method: JavaMethod, methodTypeParameters: List, returnType: KotlinType, - valueParameters: ResolvedValueParameters): MethodSignatureData + valueParameters: List + ): MethodSignatureData fun resolveMethodToFunctionDescriptor(method: JavaMethod): JavaMethodDescriptor { val annotations = c.resolveAnnotations(method) @@ -120,22 +124,22 @@ public abstract class LazyJavaScope(protected val c: LazyJavaResolverContext) : val returnType = computeMethodReturnType(method, annotations, c) - val (effectiveSignature, signatureErrors) = resolveMethodSignature(method, methodTypeParameters, returnType, valueParameters) + val effectiveSignature = resolveMethodSignature(method, methodTypeParameters, returnType, valueParameters.descriptors) functionDescriptorImpl.initialize( - effectiveSignature.getReceiverType(), + effectiveSignature.receiverType, getDispatchReceiverParameter(), - effectiveSignature.getTypeParameters(), - effectiveSignature.getValueParameters(), - effectiveSignature.getReturnType(), + effectiveSignature.typeParameters, + effectiveSignature.valueParameters, + effectiveSignature.returnType, Modality.convertFromFlags(method.isAbstract(), !method.isFinal()), method.getVisibility() ) - functionDescriptorImpl.setParameterNamesStatus(effectiveSignature.hasStableParameterNames(), valueParameters.hasSynthesizedNames) + functionDescriptorImpl.setParameterNamesStatus(effectiveSignature.hasStableParameterNames, valueParameters.hasSynthesizedNames) - if (signatureErrors.isNotEmpty()) { - c.components.externalSignatureResolver.reportSignatureErrors(functionDescriptorImpl, signatureErrors) + if (effectiveSignature.errors.isNotEmpty()) { + c.components.externalSignatureResolver.reportSignatureErrors(functionDescriptorImpl, effectiveSignature.errors) } return functionDescriptorImpl diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticScope.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticScope.kt index f3df3860007..010c02f9a62 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticScope.kt @@ -18,7 +18,7 @@ package org.jetbrains.kotlin.load.java.lazy.descriptors import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor -import org.jetbrains.kotlin.load.java.components.ExternalSignatureResolver +import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext import org.jetbrains.kotlin.load.java.structure.JavaMethod import org.jetbrains.kotlin.name.FqName @@ -31,17 +31,13 @@ public abstract class LazyJavaStaticScope(c: LazyJavaResolverContext) : LazyJava // Package fragments are not nested override fun getPackage(name: Name) = null + abstract fun getSubPackages(): Collection override fun resolveMethodSignature( method: JavaMethod, methodTypeParameters: List, returnType: KotlinType, - valueParameters: LazyJavaScope.ResolvedValueParameters - ): LazyJavaScope.MethodSignatureData { - val effectiveSignature = ExternalSignatureResolver.AlternativeMethodSignature( - returnType, null, valueParameters.descriptors, methodTypeParameters, emptyList(), false - ) - return LazyJavaScope.MethodSignatureData(effectiveSignature, effectiveSignature.getErrors()) - } + valueParameters: List + ) = LazyJavaScope.MethodSignatureData(returnType, null, valueParameters, methodTypeParameters, false, emptyList()) override fun computeNonDeclaredProperties(name: Name, result: MutableCollection) { //no undeclared properties