moved methods
getPropertyDeclarationInnerScope to JetScopeUtils
This commit is contained in:
@@ -464,7 +464,7 @@ public class BodyResolver {
|
|||||||
private JetScope makeScopeForPropertyAccessor(@NotNull JetPropertyAccessor accessor, @NotNull PropertyDescriptor descriptor) {
|
private JetScope makeScopeForPropertyAccessor(@NotNull JetPropertyAccessor accessor, @NotNull PropertyDescriptor descriptor) {
|
||||||
JetScope accessorDeclaringScope = context.getDeclaringScopes().apply(accessor);
|
JetScope accessorDeclaringScope = context.getDeclaringScopes().apply(accessor);
|
||||||
assert accessorDeclaringScope != null : "Scope for accessor " + accessor.getText() + " should exists";
|
assert accessorDeclaringScope != null : "Scope for accessor " + accessor.getText() + " should exists";
|
||||||
return JetScopeUtils.makeScopeForPropertyAccessor(descriptor, accessorDeclaringScope, descriptorResolver, trace);
|
return JetScopeUtils.makeScopeForPropertyAccessor(descriptor, accessorDeclaringScope, trace);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void resolvePropertyAccessors(JetProperty property, PropertyDescriptor propertyDescriptor) {
|
public void resolvePropertyAccessors(JetProperty property, PropertyDescriptor propertyDescriptor) {
|
||||||
@@ -521,10 +521,10 @@ public class BodyResolver {
|
|||||||
trace.report(ACCESSOR_FOR_DELEGATED_PROPERTY.on(setter));
|
trace.report(ACCESSOR_FOR_DELEGATED_PROPERTY.on(setter));
|
||||||
}
|
}
|
||||||
|
|
||||||
JetScope propertyDeclarationInnerScope = descriptorResolver.getPropertyDeclarationInnerScopeForInitializer(
|
JetScope propertyDeclarationInnerScope = JetScopeUtils.getPropertyDeclarationInnerScopeForInitializer(
|
||||||
propertyScope, propertyDescriptor.getTypeParameters(), NO_RECEIVER_PARAMETER, trace);
|
propertyScope, propertyDescriptor.getTypeParameters(), NO_RECEIVER_PARAMETER, trace);
|
||||||
JetScope accessorScope = JetScopeUtils.makeScopeForPropertyAccessor(
|
JetScope accessorScope = JetScopeUtils.makeScopeForPropertyAccessor(
|
||||||
propertyDescriptor, parentScopeForAccessor, descriptorResolver, trace);
|
propertyDescriptor, parentScopeForAccessor, trace);
|
||||||
|
|
||||||
JetType delegateType = delegatedPropertyResolver.resolveDelegateExpression(
|
JetType delegateType = delegatedPropertyResolver.resolveDelegateExpression(
|
||||||
delegateExpression, jetProperty, propertyDescriptor, propertyDeclarationInnerScope, accessorScope, trace,
|
delegateExpression, jetProperty, propertyDescriptor, propertyDeclarationInnerScope, accessorScope, trace,
|
||||||
@@ -545,7 +545,7 @@ public class BodyResolver {
|
|||||||
@NotNull JetExpression initializer,
|
@NotNull JetExpression initializer,
|
||||||
@NotNull JetScope scope
|
@NotNull JetScope scope
|
||||||
) {
|
) {
|
||||||
JetScope propertyDeclarationInnerScope = descriptorResolver.getPropertyDeclarationInnerScopeForInitializer(
|
JetScope propertyDeclarationInnerScope = JetScopeUtils.getPropertyDeclarationInnerScopeForInitializer(
|
||||||
scope, propertyDescriptor.getTypeParameters(), NO_RECEIVER_PARAMETER, trace);
|
scope, propertyDescriptor.getTypeParameters(), NO_RECEIVER_PARAMETER, trace);
|
||||||
JetType expectedTypeForInitializer = property.getTypeRef() != null ? propertyDescriptor.getType() : NO_EXPECTED_TYPE;
|
JetType expectedTypeForInitializer = property.getTypeRef() != null ? propertyDescriptor.getType() : NO_EXPECTED_TYPE;
|
||||||
expressionTypingServices.getType(propertyDeclarationInnerScope, initializer, expectedTypeForInitializer, context.getOuterDataFlowInfo(), trace);
|
expressionTypingServices.getType(propertyDeclarationInnerScope, initializer, expectedTypeForInitializer, context.getOuterDataFlowInfo(), trace);
|
||||||
|
|||||||
@@ -890,50 +890,6 @@ public class DescriptorResolver {
|
|||||||
return variableDescriptor;
|
return variableDescriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JetScope getPropertyDeclarationInnerScope(
|
|
||||||
@NotNull PropertyDescriptor propertyDescriptor,
|
|
||||||
@NotNull JetScope outerScope,
|
|
||||||
@NotNull List<? extends TypeParameterDescriptor> typeParameters,
|
|
||||||
@Nullable ReceiverParameterDescriptor receiver,
|
|
||||||
BindingTrace trace
|
|
||||||
) {
|
|
||||||
return getPropertyDeclarationInnerScope(propertyDescriptor, outerScope, typeParameters, receiver, trace, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public JetScope getPropertyDeclarationInnerScopeForInitializer(
|
|
||||||
@NotNull JetScope outerScope,
|
|
||||||
@NotNull List<? extends TypeParameterDescriptor> typeParameters,
|
|
||||||
@Nullable ReceiverParameterDescriptor receiver,
|
|
||||||
BindingTrace trace
|
|
||||||
) {
|
|
||||||
return getPropertyDeclarationInnerScope(null, outerScope, typeParameters, receiver, trace, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
private JetScope getPropertyDeclarationInnerScope(
|
|
||||||
@Nullable PropertyDescriptor propertyDescriptor, // PropertyDescriptor can be null for property scope which hasn't label to property (in this case addLabelForProperty parameter must be false
|
|
||||||
@NotNull JetScope outerScope,
|
|
||||||
@NotNull List<? extends TypeParameterDescriptor> typeParameters,
|
|
||||||
@Nullable ReceiverParameterDescriptor receiver,
|
|
||||||
BindingTrace trace,
|
|
||||||
boolean addLabelForProperty
|
|
||||||
) {
|
|
||||||
WritableScopeImpl result = new WritableScopeImpl(
|
|
||||||
outerScope, outerScope.getContainingDeclaration(), new TraceBasedRedeclarationHandler(trace),
|
|
||||||
"Property declaration inner scope");
|
|
||||||
if (addLabelForProperty) {
|
|
||||||
assert propertyDescriptor != null : "PropertyDescriptor can be null for property scope which hasn't label to property";
|
|
||||||
result.addLabeledDeclaration(propertyDescriptor);
|
|
||||||
}
|
|
||||||
for (TypeParameterDescriptor typeParameterDescriptor : typeParameters) {
|
|
||||||
result.addTypeParameterDescriptor(typeParameterDescriptor);
|
|
||||||
}
|
|
||||||
if (receiver != null) {
|
|
||||||
result.setImplicitReceiver(receiver);
|
|
||||||
}
|
|
||||||
result.changeLockLevel(WritableScope.LockLevel.READING);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public PropertyDescriptor resolvePropertyDescriptor(
|
public PropertyDescriptor resolvePropertyDescriptor(
|
||||||
@NotNull DeclarationDescriptor containingDeclaration,
|
@NotNull DeclarationDescriptor containingDeclaration,
|
||||||
@@ -991,8 +947,8 @@ public class DescriptorResolver {
|
|||||||
ReceiverParameterDescriptor receiverDescriptor = DescriptorFactory.createReceiverParameterForCallable(propertyDescriptor,
|
ReceiverParameterDescriptor receiverDescriptor = DescriptorFactory.createReceiverParameterForCallable(propertyDescriptor,
|
||||||
receiverType);
|
receiverType);
|
||||||
|
|
||||||
JetScope propertyScope = getPropertyDeclarationInnerScope(propertyDescriptor, scope, typeParameterDescriptors,
|
JetScope propertyScope = JetScopeUtils.getPropertyDeclarationInnerScope(propertyDescriptor, scope, typeParameterDescriptors,
|
||||||
NO_RECEIVER_PARAMETER, trace);
|
NO_RECEIVER_PARAMETER, trace);
|
||||||
|
|
||||||
JetType type = getVariableType(propertyDescriptor, propertyScope, property, dataFlowInfo, true, trace);
|
JetType type = getVariableType(propertyDescriptor, propertyScope, property, dataFlowInfo, true, trace);
|
||||||
|
|
||||||
@@ -1097,7 +1053,7 @@ public class DescriptorResolver {
|
|||||||
@NotNull DataFlowInfo dataFlowInfo,
|
@NotNull DataFlowInfo dataFlowInfo,
|
||||||
@NotNull BindingTrace trace
|
@NotNull BindingTrace trace
|
||||||
) {
|
) {
|
||||||
JetScope accessorScope = JetScopeUtils.makeScopeForPropertyAccessor(propertyDescriptor, scope, this, trace);
|
JetScope accessorScope = JetScopeUtils.makeScopeForPropertyAccessor(propertyDescriptor, scope, trace);
|
||||||
|
|
||||||
JetType type = delegatedPropertyResolver.resolveDelegateExpression(
|
JetType type = delegatedPropertyResolver.resolveDelegateExpression(
|
||||||
delegateExpression, property, propertyDescriptor, scope, accessorScope, trace, dataFlowInfo);
|
delegateExpression, property, propertyDescriptor, scope, accessorScope, trace, dataFlowInfo);
|
||||||
|
|||||||
@@ -21,10 +21,8 @@ import com.google.common.collect.Collections2;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.TraceBasedRedeclarationHandler;
|
import org.jetbrains.jet.lang.resolve.TraceBasedRedeclarationHandler;
|
||||||
@@ -75,13 +73,12 @@ public final class JetScopeUtils {
|
|||||||
public static JetScope makeScopeForPropertyAccessor(
|
public static JetScope makeScopeForPropertyAccessor(
|
||||||
@NotNull PropertyDescriptor propertyDescriptor,
|
@NotNull PropertyDescriptor propertyDescriptor,
|
||||||
@NotNull JetScope parentScope,
|
@NotNull JetScope parentScope,
|
||||||
@NotNull DescriptorResolver descriptorResolver,
|
|
||||||
@NotNull BindingTrace trace
|
@NotNull BindingTrace trace
|
||||||
) {
|
) {
|
||||||
JetScope propertyDeclarationInnerScope = descriptorResolver
|
JetScope propertyDeclarationInnerScope =
|
||||||
.getPropertyDeclarationInnerScope(propertyDescriptor, parentScope,
|
getPropertyDeclarationInnerScope(propertyDescriptor, parentScope,
|
||||||
propertyDescriptor.getTypeParameters(),
|
propertyDescriptor.getTypeParameters(),
|
||||||
propertyDescriptor.getReceiverParameter(), trace);
|
propertyDescriptor.getReceiverParameter(), trace);
|
||||||
WritableScope accessorScope = new WritableScopeImpl(propertyDeclarationInnerScope, parentScope.getContainingDeclaration(),
|
WritableScope accessorScope = new WritableScopeImpl(propertyDeclarationInnerScope, parentScope.getContainingDeclaration(),
|
||||||
new TraceBasedRedeclarationHandler(trace), "Accessor Scope");
|
new TraceBasedRedeclarationHandler(trace), "Accessor Scope");
|
||||||
accessorScope.changeLockLevel(WritableScope.LockLevel.READING);
|
accessorScope.changeLockLevel(WritableScope.LockLevel.READING);
|
||||||
@@ -89,4 +86,48 @@ public final class JetScopeUtils {
|
|||||||
return accessorScope;
|
return accessorScope;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static JetScope getPropertyDeclarationInnerScope(
|
||||||
|
@NotNull PropertyDescriptor propertyDescriptor,
|
||||||
|
@NotNull JetScope outerScope,
|
||||||
|
@NotNull List<? extends TypeParameterDescriptor> typeParameters,
|
||||||
|
@Nullable ReceiverParameterDescriptor receiver,
|
||||||
|
BindingTrace trace
|
||||||
|
) {
|
||||||
|
return getPropertyDeclarationInnerScope(propertyDescriptor, outerScope, typeParameters, receiver, trace, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static JetScope getPropertyDeclarationInnerScopeForInitializer(
|
||||||
|
@NotNull JetScope outerScope,
|
||||||
|
@NotNull List<? extends TypeParameterDescriptor> typeParameters,
|
||||||
|
@Nullable ReceiverParameterDescriptor receiver,
|
||||||
|
BindingTrace trace
|
||||||
|
) {
|
||||||
|
return getPropertyDeclarationInnerScope(null, outerScope, typeParameters, receiver, trace, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static JetScope getPropertyDeclarationInnerScope(
|
||||||
|
@Nullable PropertyDescriptor propertyDescriptor,
|
||||||
|
// PropertyDescriptor can be null for property scope which hasn't label to property (in this case addLabelForProperty parameter must be false
|
||||||
|
@NotNull JetScope outerScope,
|
||||||
|
@NotNull List<? extends TypeParameterDescriptor> typeParameters,
|
||||||
|
@Nullable ReceiverParameterDescriptor receiver,
|
||||||
|
BindingTrace trace,
|
||||||
|
boolean addLabelForProperty
|
||||||
|
) {
|
||||||
|
WritableScopeImpl result = new WritableScopeImpl(
|
||||||
|
outerScope, outerScope.getContainingDeclaration(), new TraceBasedRedeclarationHandler(trace),
|
||||||
|
"Property declaration inner scope");
|
||||||
|
if (addLabelForProperty) {
|
||||||
|
assert propertyDescriptor != null : "PropertyDescriptor can be null for property scope which hasn't label to property";
|
||||||
|
result.addLabeledDeclaration(propertyDescriptor);
|
||||||
|
}
|
||||||
|
for (TypeParameterDescriptor typeParameterDescriptor : typeParameters) {
|
||||||
|
result.addTypeParameterDescriptor(typeParameterDescriptor);
|
||||||
|
}
|
||||||
|
if (receiver != null) {
|
||||||
|
result.setImplicitReceiver(receiver);
|
||||||
|
}
|
||||||
|
result.changeLockLevel(WritableScope.LockLevel.READING);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user