diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/ScriptDescriptorImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/ScriptDescriptorImpl.java index a5b6580e45b..7965e16b8da 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/ScriptDescriptorImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/ScriptDescriptorImpl.java @@ -167,13 +167,9 @@ public class ScriptDescriptorImpl extends DeclarationDescriptorNonRootImpl imple public static ConstructorDescriptorImpl createConstructor( @NotNull ScriptDescriptor scriptDescriptor, @NotNull List valueParameters ) { - return ConstructorDescriptorImpl.create(scriptDescriptor.getClassDescriptor(), Annotations.EMPTY, true, SourceElement.NO_SOURCE) - .initialize( - Collections.emptyList(), - valueParameters, - Visibilities.PUBLIC, - false - ); + return ConstructorDescriptorImpl + .create(scriptDescriptor.getClassDescriptor(), Annotations.EMPTY, true, SourceElement.NO_SOURCE) + .initialize(Collections.emptyList(), valueParameters, Visibilities.PUBLIC); } @NotNull diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java index d2b27c3a2c0..a77a84e34ec 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java @@ -1277,12 +1277,9 @@ public class DescriptorResolver { parameterScope.changeLockLevel(WritableScope.LockLevel.BOTH); ConstructorDescriptorImpl constructor = constructorDescriptor.initialize( typeParameters, - resolveValueParameters( - constructorDescriptor, - parameterScope, - valueParameters, trace), - resolveVisibilityFromModifiers(modifierList, getDefaultConstructorVisibility(classDescriptor)), - isConstructorOfStaticNestedClass(constructorDescriptor)); + resolveValueParameters(constructorDescriptor, parameterScope, valueParameters, trace), + resolveVisibilityFromModifiers(modifierList, getDefaultConstructorVisibility(classDescriptor)) + ); if (isAnnotationClass(classDescriptor)) { CompileTimeConstantUtils.checkConstructorParametersType(valueParameters, trace); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java index 63b8aa1c049..57dfc664345 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java @@ -281,7 +281,7 @@ public class TaskPrioritizer { @NotNull Call call ) { for (D extension : descriptors) { - if (DescriptorUtils.isConstructorOfStaticNestedClass(extension)) { + if (extension instanceof ConstructorDescriptor && DescriptorUtils.isStaticNestedClass(extension.getContainingDeclaration())) { // We don't want static nested classes' constructors to be resolved with expectedThisObject continue; } 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 e9ad56aaf31..264ae7ac177 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 @@ -56,7 +56,7 @@ public class LazyJavaClassMemberScope( internal val _constructors = c.storageManager.createLazyValue { jClass.getConstructors().flatMap { jCtor -> - val constructor = resolveConstructor(jCtor, getContainingDeclaration(), jClass.isStatic()) + val constructor = resolveConstructor(jCtor, getContainingDeclaration()) val samAdapter = resolveSamAdapter(constructor) if (samAdapter != null) { samAdapter.setReturnType(containingDeclaration.getDefaultType()) @@ -113,7 +113,7 @@ public class LazyJavaClassMemberScope( else null } - private fun resolveConstructor(constructor: JavaMethod, classDescriptor: ClassDescriptor, isStaticClass: Boolean): JavaConstructorDescriptor { + private fun resolveConstructor(constructor: JavaMethod, classDescriptor: ClassDescriptor): JavaConstructorDescriptor { val constructorDescriptor = JavaConstructorDescriptor.createJavaConstructor( classDescriptor, Annotations.EMPTY, /* isPrimary = */ false, c.sourceElementFactory.source(constructor) ) @@ -125,8 +125,7 @@ public class LazyJavaClassMemberScope( constructorDescriptor.initialize( classDescriptor.getTypeConstructor().getParameters(), effectiveSignature.getValueParameters(), - constructor.getVisibility(), - isStaticClass + constructor.getVisibility() ) constructorDescriptor.setHasStableParameterNames(effectiveSignature.hasStableParameterNames()) constructorDescriptor.setHasSynthesizedParameterNames(valueParameters.hasSynthesizedNames) @@ -157,7 +156,7 @@ public class LazyJavaClassMemberScope( else Collections.emptyList() constructorDescriptor.setHasSynthesizedParameterNames(false) - constructorDescriptor.initialize(typeParameters, valueParameters, getConstructorVisibility(classDescriptor), jClass.isStatic()) + constructorDescriptor.initialize(typeParameters, valueParameters, getConstructorVisibility(classDescriptor)) constructorDescriptor.setHasStableParameterNames(true) constructorDescriptor.setReturnType(classDescriptor.getDefaultType()) c.javaResolverCache.recordConstructor(jClass, constructorDescriptor); diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/sam/SingleAbstractMethodUtils.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/sam/SingleAbstractMethodUtils.java index 161d9f0b777..fa64640f73f 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/sam/SingleAbstractMethodUtils.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/sam/SingleAbstractMethodUtils.java @@ -210,12 +210,7 @@ public class SingleAbstractMethodUtils { @NotNull List valueParameters, @Nullable JetType returnType ) { - result.initialize( - typeParameters, - valueParameters, - original.getVisibility(), - original.getExpectedThisObject() == ReceiverParameterDescriptor.NO_RECEIVER_PARAMETER - ); + result.initialize(typeParameters, valueParameters, original.getVisibility()); } }); } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ConstructorDescriptorImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ConstructorDescriptorImpl.java index dadc33dd1d9..4ffa2ea76e0 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ConstructorDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/ConstructorDescriptorImpl.java @@ -59,19 +59,20 @@ public class ConstructorDescriptorImpl extends FunctionDescriptorImpl implements public ConstructorDescriptorImpl initialize( @NotNull List typeParameters, @NotNull List unsubstitutedValueParameters, - @NotNull Visibility visibility, - boolean isStatic + @NotNull Visibility visibility ) { - super.initialize(null, isStatic ? NO_RECEIVER_PARAMETER : getExpectedThisObject(getContainingDeclaration()), typeParameters, - unsubstitutedValueParameters, null, Modality.FINAL, visibility); + super.initialize(null, calculateExpectedThisObject(), typeParameters, unsubstitutedValueParameters, null, Modality.FINAL, visibility); return this; } @Nullable - private static ReceiverParameterDescriptor getExpectedThisObject(@NotNull ClassDescriptor descriptor) { - DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration(); - if (containingDeclaration instanceof ClassDescriptor) { - return ((ClassDescriptor) containingDeclaration).getThisAsReceiverParameter(); + private ReceiverParameterDescriptor calculateExpectedThisObject() { + ClassDescriptor classDescriptor = getContainingDeclaration(); + if (classDescriptor.isInner()) { + DeclarationDescriptor classContainer = classDescriptor.getContainingDeclaration(); + if (classContainer instanceof ClassDescriptor) { + return ((ClassDescriptor) classContainer).getThisAsReceiverParameter(); + } } return NO_RECEIVER_PARAMETER; } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorFactory.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorFactory.java index d71d6a3cc7a..f835d1fc39f 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorFactory.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorFactory.java @@ -37,7 +37,7 @@ public class DescriptorFactory { public DefaultConstructorDescriptor(@NotNull ClassDescriptor containingClass, @NotNull SourceElement source) { super(containingClass, null, Annotations.EMPTY, true, Kind.DECLARATION, source); initialize(Collections.emptyList(), Collections.emptyList(), - getDefaultConstructorVisibility(containingClass), true); + getDefaultConstructorVisibility(containingClass)); } } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java index 0fe292f2f0d..9c97aa89957 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java @@ -315,10 +315,6 @@ public class DescriptorUtils { return receiverParameterDescriptor == null ? null : receiverParameterDescriptor.getType(); } - public static boolean isConstructorOfStaticNestedClass(@Nullable CallableDescriptor descriptor) { - return descriptor instanceof ConstructorDescriptor && isStaticNestedClass(descriptor.getContainingDeclaration()); - } - /** * @return true if descriptor is a class inside another class and does not have access to the outer class */ diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/ErrorUtils.java b/core/descriptors/src/org/jetbrains/jet/lang/types/ErrorUtils.java index 119a0c0a2e5..b0f426294ff 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/ErrorUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/ErrorUtils.java @@ -233,7 +233,7 @@ public class ErrorUtils { ConstructorDescriptorImpl errorConstructor = ConstructorDescriptorImpl.create(this, Annotations.EMPTY, true, SourceElement.NO_SOURCE); errorConstructor.initialize(Collections.emptyList(), Collections.emptyList(), - Visibilities.INTERNAL, false); + Visibilities.INTERNAL); JetScope memberScope = createErrorScope(getName().asString()); errorConstructor.setReturnType( new ErrorTypeImpl( diff --git a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/MemberDeserializer.java b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/MemberDeserializer.java index ff5adb1a956..b0f93af3331 100644 --- a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/MemberDeserializer.java +++ b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/MemberDeserializer.java @@ -28,7 +28,6 @@ import org.jetbrains.jet.lang.descriptors.impl.PropertyGetterDescriptorImpl; import org.jetbrains.jet.lang.descriptors.impl.PropertySetterDescriptorImpl; import org.jetbrains.jet.lang.descriptors.impl.ValueParameterDescriptorImpl; import org.jetbrains.jet.lang.resolve.DescriptorFactory; -import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant; import java.util.ArrayList; @@ -192,8 +191,7 @@ public class MemberDeserializer { descriptor.initialize( classDescriptor.getTypeConstructor().getParameters(), local.getDeserializer().valueParameters(proto, AnnotatedCallableKind.FUNCTION), - visibility(Flags.VISIBILITY.get(proto.getFlags())), - DescriptorUtils.isConstructorOfStaticNestedClass(descriptor) + visibility(Flags.VISIBILITY.get(proto.getFlags())) ); descriptor.setReturnType(local.getTypeDeserializer().type(proto.getReturnType())); return descriptor; diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/missingDependencies.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/missingDependencies.kt index ea6afd02bb2..9abcd517f86 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/missingDependencies.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/missingDependencies.kt @@ -85,7 +85,7 @@ private class MissingDependencyErrorClassDescriptor(containing: DeclarationDescr { val emptyConstructor = ConstructorDescriptorImpl.create(this, Annotations.EMPTY, true, SourceElement.NO_SOURCE) - emptyConstructor.initialize(listOf(), listOf(), Visibilities.INTERNAL, false) + emptyConstructor.initialize(listOf(), listOf(), Visibilities.INTERNAL) emptyConstructor.setReturnType(createErrorType("")) initialize(JetScope.EMPTY, setOf(emptyConstructor), emptyConstructor) }