From d614adcd2a7cd8883895764fc864dd4059bf7024 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Mon, 2 Nov 2015 11:24:03 +0300 Subject: [PATCH] Obtain type parameters of constructor from containing class Effectively this commit is just inlining of 'typeParameters' parameter --- .../kotlin/load/java/sam/SingleAbstractMethodUtils.java | 2 +- .../kotlin/resolve/FunctionDescriptorResolver.kt | 4 ---- .../lazy/descriptors/LazyScriptClassMemberScope.kt | 1 - .../java/lazy/descriptors/LazyJavaClassMemberScope.kt | 4 +--- .../descriptors/impl/ConstructorDescriptorImpl.java | 8 +++++--- .../org/jetbrains/kotlin/resolve/DescriptorFactory.java | 2 +- .../src/org/jetbrains/kotlin/types/ErrorUtils.java | 2 +- .../serialization/deserialization/MemberDeserializer.kt | 1 - .../idea/decompiler/textBuilder/missingDependencies.kt | 2 +- 9 files changed, 10 insertions(+), 16 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/sam/SingleAbstractMethodUtils.java b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/sam/SingleAbstractMethodUtils.java index df46691a6dc..42213fae11d 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/sam/SingleAbstractMethodUtils.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/sam/SingleAbstractMethodUtils.java @@ -227,7 +227,7 @@ public class SingleAbstractMethodUtils { @NotNull List valueParameters, @NotNull KotlinType returnType ) { - result.initialize(typeParameters, valueParameters, original.getVisibility()); + result.initialize(valueParameters, original.getVisibility()); result.setReturnType(returnType); } }); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt index 486f2668bb2..840acf0d056 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt @@ -241,7 +241,6 @@ class FunctionDescriptorResolver( true, classElement.getPrimaryConstructorModifierList(), classElement.getPrimaryConstructor() ?: classElement, - classDescriptor.getTypeConstructor().getParameters(), classElement.getPrimaryConstructorParameters(), trace ) @@ -259,7 +258,6 @@ class FunctionDescriptorResolver( false, constructor.getModifierList(), constructor, - classDescriptor.getTypeConstructor().getParameters(), constructor.getValueParameters(), trace ) @@ -271,7 +269,6 @@ class FunctionDescriptorResolver( isPrimary: Boolean, modifierList: KtModifierList?, declarationToTrace: KtDeclaration, - typeParameters: List, valueParameters: List, trace: BindingTrace ): ConstructorDescriptorImpl { @@ -291,7 +288,6 @@ class FunctionDescriptorResolver( ) parameterScope.changeLockLevel(LexicalWritableScope.LockLevel.BOTH) val constructor = constructorDescriptor.initialize( - typeParameters, resolveValueParameters(constructorDescriptor, parameterScope, valueParameters, trace, null), resolveVisibilityFromModifiers( modifierList, diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptClassMemberScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptClassMemberScope.kt index c484e44013c..803aaad3b71 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptClassMemberScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptClassMemberScope.kt @@ -118,7 +118,6 @@ public class LazyScriptClassMemberScope protected constructor( true, SourceElement.NO_SOURCE ).initialize( - listOf(), valueParameters, Visibilities.PUBLIC ) 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 d2af8466264..61832abc5a2 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 @@ -480,7 +480,6 @@ public class LazyJavaClassMemberScope( constructor, false, null, null, valueParameters.descriptors, Collections.emptyList(), false) constructorDescriptor.initialize( - classDescriptor.getTypeConstructor().getParameters(), effectiveSignature.getValueParameters(), constructor.getVisibility() ) @@ -508,12 +507,11 @@ public class LazyJavaClassMemberScope( val constructorDescriptor = JavaConstructorDescriptor.createJavaConstructor( classDescriptor, Annotations.EMPTY, /* isPrimary = */ true, c.components.sourceElementFactory.source(jClass) ) - val typeParameters = classDescriptor.getTypeConstructor().getParameters() val valueParameters = if (isAnnotation) createAnnotationConstructorParameters(constructorDescriptor) else Collections.emptyList() constructorDescriptor.setHasSynthesizedParameterNames(false) - constructorDescriptor.initialize(typeParameters, valueParameters, getConstructorVisibility(classDescriptor)) + constructorDescriptor.initialize(valueParameters, getConstructorVisibility(classDescriptor)) constructorDescriptor.setHasStableParameterNames(true) constructorDescriptor.setReturnType(classDescriptor.getDefaultType()) c.components.javaResolverCache.recordConstructor(jClass, constructorDescriptor); diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ConstructorDescriptorImpl.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ConstructorDescriptorImpl.java index 42ecf198b0e..c342064c1d3 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ConstructorDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ConstructorDescriptorImpl.java @@ -55,12 +55,14 @@ public class ConstructorDescriptorImpl extends FunctionDescriptorImpl implements } public ConstructorDescriptorImpl initialize( - @NotNull List typeParameters, @NotNull List unsubstitutedValueParameters, @NotNull Visibility visibility ) { - super.initialize(null, calculateDispatchReceiverParameter(), typeParameters, unsubstitutedValueParameters, null, - Modality.FINAL, visibility); + super.initialize( + null, calculateDispatchReceiverParameter(), + getContainingDeclaration().getDeclaredTypeParameters(), + unsubstitutedValueParameters, null, + Modality.FINAL, visibility); return this; } diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorFactory.java b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorFactory.java index 56fc580aabf..c3613a5bc04 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorFactory.java +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorFactory.java @@ -37,7 +37,7 @@ public class DescriptorFactory { private static class DefaultConstructorDescriptor extends ConstructorDescriptorImpl { public DefaultConstructorDescriptor(@NotNull ClassDescriptor containingClass, @NotNull SourceElement source) { super(containingClass, null, Annotations.Companion.getEMPTY(), true, Kind.DECLARATION, source); - initialize(Collections.emptyList(), Collections.emptyList(), + initialize(Collections.emptyList(), getDefaultConstructorVisibility(containingClass)); } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java index ab55ad49ac8..6a3f90adf3c 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java @@ -269,7 +269,7 @@ public class ErrorUtils { Modality.OPEN, Collections.emptyList(), SourceElement.NO_SOURCE); ConstructorDescriptorImpl errorConstructor = ConstructorDescriptorImpl.create(this, Annotations.Companion.getEMPTY(), true, SourceElement.NO_SOURCE); - errorConstructor.initialize(Collections.emptyList(), Collections.emptyList(), + errorConstructor.initialize(Collections.emptyList(), Visibilities.INTERNAL); MemberScope memberScope = createErrorScope(getName().asString()); errorConstructor.setReturnType( diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/MemberDeserializer.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/MemberDeserializer.kt index 59199780a71..8f2ebf524f2 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/MemberDeserializer.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/MemberDeserializer.kt @@ -170,7 +170,6 @@ public class MemberDeserializer(private val c: DeserializationContext) { ) val local = c.childContext(descriptor, listOf()) descriptor.initialize( - classDescriptor.typeConstructor.parameters, local.memberDeserializer.valueParameters(proto.valueParameterList, proto, AnnotatedCallableKind.FUNCTION), Deserialization.visibility(Flags.VISIBILITY.get(proto.flags)) ) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/missingDependencies.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/missingDependencies.kt index 02cc5e63fa8..8e71d34b904 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/missingDependencies.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/missingDependencies.kt @@ -69,7 +69,7 @@ private class MissingDependencyErrorClassDescriptor( init { val emptyConstructor = ConstructorDescriptorImpl.create(this, Annotations.EMPTY, true, SourceElement.NO_SOURCE) - emptyConstructor.initialize(listOf(), listOf(), Visibilities.DEFAULT_VISIBILITY) + emptyConstructor.initialize(listOf(), Visibilities.DEFAULT_VISIBILITY) emptyConstructor.setReturnType(createErrorType("")) initialize(MemberScope.Empty, setOf(emptyConstructor), emptyConstructor) }