From f03a35d7ced9c5f807db3f26c8d5fd7e72aa95e2 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 10 Jun 2015 15:08:21 +0300 Subject: [PATCH] Resolve refactoring: resolvePropertyDeclarationBodies --- .../kotlin/resolve/BodyResolver.java | 62 +++++++++---------- 1 file changed, 29 insertions(+), 33 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/BodyResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/BodyResolver.java index 65276c68d7e..b949e974688 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/BodyResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/BodyResolver.java @@ -533,6 +533,32 @@ public class BodyResolver { return parameterScope; } + private void resolveProperty( + @NotNull BodiesResolveContext c, + @Nullable JetScope parentScope, + @NotNull JetProperty property, + @NotNull PropertyDescriptor propertyDescriptor + ) { + computeDeferredType(propertyDescriptor.getReturnType()); + + JetExpression initializer = property.getInitializer(); + JetScope propertyScope = getScopeForProperty(c, property); + if (parentScope == null) { + parentScope = propertyScope; + } + if (initializer != null) { + resolvePropertyInitializer(c, property, propertyDescriptor, initializer, propertyScope); + } + + JetExpression delegateExpression = property.getDelegateExpression(); + if (delegateExpression != null) { + assert initializer == null : "Initializer should be null for delegated property : " + property.getText(); + resolvePropertyDelegate(c, property, propertyDescriptor, delegateExpression, parentScope, propertyScope); + } + + resolvePropertyAccessors(c, property, propertyDescriptor); + } + private void resolvePropertyDeclarationBodies(@NotNull BodiesResolveContext c) { // Member properties @@ -546,23 +572,7 @@ public class BodyResolver { PropertyDescriptor propertyDescriptor = c.getProperties().get(property); assert propertyDescriptor != null; - computeDeferredType(propertyDescriptor.getReturnType()); - - JetExpression initializer = property.getInitializer(); - JetScope propertyScope = getScopeForProperty(c, property); - if (initializer != null) { - resolvePropertyInitializer(c, property, propertyDescriptor, initializer, propertyScope); - } - - JetExpression delegateExpression = property.getDelegateExpression(); - if (delegateExpression != null) { - assert initializer == null : "Initializer should be null for delegated property : " + property.getText(); - resolvePropertyDelegate(c, property, propertyDescriptor, delegateExpression, classDescriptor.getScopeForMemberDeclarationResolution(), propertyScope); - } - - ForceResolveUtil.forceResolveAllContents(propertyDescriptor.getAnnotations()); - - resolvePropertyAccessors(c, property, propertyDescriptor); + resolveProperty(c, classDescriptor.getScopeForMemberDeclarationResolution(), property, propertyDescriptor); processed.add(property); } } @@ -574,21 +584,7 @@ public class BodyResolver { PropertyDescriptor propertyDescriptor = entry.getValue(); - computeDeferredType(propertyDescriptor.getReturnType()); - - JetExpression initializer = property.getInitializer(); - JetScope propertyScope = getScopeForProperty(c, property); - if (initializer != null) { - resolvePropertyInitializer(c, property, propertyDescriptor, initializer, propertyScope); - } - - JetExpression delegateExpression = property.getDelegateExpression(); - if (delegateExpression != null) { - assert initializer == null : "Initializer should be null for delegated property : " + property.getText(); - resolvePropertyDelegate(c, property, propertyDescriptor, delegateExpression, propertyScope, propertyScope); - } - - resolvePropertyAccessors(c, property, propertyDescriptor); + resolveProperty(c, null, property, propertyDescriptor); } } @@ -696,7 +692,7 @@ public class BodyResolver { } @NotNull - private JetScope getScopeForProperty(@NotNull BodiesResolveContext c, @NotNull JetProperty property) { + private static JetScope getScopeForProperty(@NotNull BodiesResolveContext c, @NotNull JetProperty property) { JetScope scope = c.getDeclaringScopes().apply(property); assert scope != null : "Scope for property " + property.getText() + " should exists"; return scope;