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 5dc93a762fb..4eb73e176c7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java @@ -820,6 +820,7 @@ public class DescriptorResolver { BindingTrace trace ) { DeclarationDescriptor containingDeclaration = scope.getContainingDeclaration(); + // SCRIPT: Create property descriptors if (JetPsiUtil.isScriptDeclaration(variable)) { PropertyDescriptorImpl propertyDescriptor = PropertyDescriptorImpl.create( containingDeclaration, @@ -836,6 +837,7 @@ public class DescriptorResolver { ReceiverParameterDescriptor receiverParameter = ((ScriptDescriptor) containingDeclaration).getThisAsReceiverParameter(); propertyDescriptor.setType(type, Collections.emptyList(), receiverParameter, (JetType) null); + initializeWithDefaultGetterSetter(propertyDescriptor); trace.record(BindingContext.VARIABLE, variable, propertyDescriptor); return propertyDescriptor; } @@ -850,6 +852,20 @@ public class DescriptorResolver { } } + private static void initializeWithDefaultGetterSetter(PropertyDescriptorImpl propertyDescriptor) { + PropertyGetterDescriptorImpl getter = propertyDescriptor.getGetter(); + if (getter == null && propertyDescriptor.getVisibility() != Visibilities.PRIVATE) { + getter = DescriptorFactory.createDefaultGetter(propertyDescriptor); + getter.initialize(propertyDescriptor.getType()); + } + + PropertySetterDescriptor setter = propertyDescriptor.getSetter(); + if (setter == null && propertyDescriptor.isVar()) { + setter = DescriptorFactory.createDefaultSetter(propertyDescriptor); + } + propertyDescriptor.initialize(getter, setter); + } + @NotNull public VariableDescriptorImpl resolveLocalVariableDescriptorWithType( @NotNull JetScope scope, diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptBodyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptBodyResolver.java index 8b07aeae159..6142dcde11a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptBodyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptBodyResolver.java @@ -70,7 +70,8 @@ public class ScriptBodyResolver { if (jetDeclaration instanceof JetProperty) { if (!shouldBeScriptClassMember(jetDeclaration)) continue; - properties.add((PropertyDescriptorImpl) bindingContext.get(BindingContext.VARIABLE, jetDeclaration)); + PropertyDescriptorImpl propertyDescriptor = (PropertyDescriptorImpl) bindingContext.get(BindingContext.VARIABLE, jetDeclaration); + properties.add(propertyDescriptor); } else if (jetDeclaration instanceof JetNamedFunction) { if (!shouldBeScriptClassMember(jetDeclaration)) continue; diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/ScriptDescriptorImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/ScriptDescriptorImpl.java index 0b271537f82..a7ef6fcb38b 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/ScriptDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/ScriptDescriptorImpl.java @@ -19,7 +19,6 @@ package org.jetbrains.jet.lang.descriptors; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.annotations.Annotations; import org.jetbrains.jet.lang.descriptors.impl.*; -import org.jetbrains.jet.lang.resolve.DescriptorFactory; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.RedeclarationHandler; @@ -94,7 +93,6 @@ public class ScriptDescriptorImpl extends DeclarationDescriptorNonRootImpl imple classScope.addPropertyDescriptor(propertyDescriptor); for (PropertyDescriptorImpl property : properties) { - initializeWithDefaultGetterSetter(property); classScope.addPropertyDescriptor(property); } @@ -103,20 +101,6 @@ public class ScriptDescriptorImpl extends DeclarationDescriptorNonRootImpl imple } } - public static void initializeWithDefaultGetterSetter(PropertyDescriptorImpl propertyDescriptor) { - PropertyGetterDescriptorImpl getter = propertyDescriptor.getGetter(); - if (getter == null && propertyDescriptor.getVisibility() != Visibilities.PRIVATE) { - getter = DescriptorFactory.createDefaultGetter(propertyDescriptor); - getter.initialize(propertyDescriptor.getType()); - } - - PropertySetterDescriptor setter = propertyDescriptor.getSetter(); - if (setter == null && propertyDescriptor.isVar()) { - setter = DescriptorFactory.createDefaultSetter(propertyDescriptor); - } - propertyDescriptor.initialize(getter, setter); - } - @Override public int getPriority() { return priority;