From ff29684e3dda9986de8ad60d4a5d99713708e28b Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 20 Nov 2013 18:55:51 +0400 Subject: [PATCH] Delete ExpressionPosition It had been deprecated in 838c408 --- .../jet/lang/resolve/BodyResolver.java | 5 ++- .../resolve/DelegatedPropertyResolver.java | 3 +- .../jet/lang/resolve/ScriptBodyResolver.java | 5 ++- .../resolve/calls/ArgumentTypeResolver.java | 8 +++-- .../resolve/calls/CallExpressionResolver.java | 16 +++++---- .../jet/lang/resolve/calls/CallResolver.java | 5 +-- .../context/BasicCallResolutionContext.java | 24 +++++++------- .../CallCandidateResolutionContext.java | 18 ++++------ .../calls/context/CallResolutionContext.java | 6 ++-- .../calls/context/ExpressionPosition.java | 22 ------------- .../calls/context/ResolutionContext.java | 33 +++++-------------- .../context/SimpleResolutionContext.java | 26 +++++++++++---- .../resolve/calls/tasks/ResolutionTask.java | 15 ++++----- .../expressions/ExpressionTypingContext.java | 21 +++++------- .../expressions/ExpressionTypingServices.java | 14 +++----- .../expressions/ExpressionTypingUtils.java | 6 ++-- .../resolve/JetExpectedResolveDataUtil.java | 3 +- 17 files changed, 95 insertions(+), 135 deletions(-) delete mode 100644 compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/ExpressionPosition.java diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java index 1d9c5684745..45008535b9a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java @@ -27,7 +27,6 @@ import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.context.ContextDependency; -import org.jetbrains.jet.lang.resolve.calls.context.ExpressionPosition; import org.jetbrains.jet.lang.resolve.calls.context.ResolutionResultsCacheImpl; import org.jetbrains.jet.lang.resolve.calls.context.SimpleResolutionContext; import org.jetbrains.jet.lang.resolve.calls.results.OverloadResolutionResults; @@ -41,8 +40,8 @@ import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.LabelResolver; import org.jetbrains.jet.lexer.JetTokens; import org.jetbrains.jet.util.Box; -import org.jetbrains.jet.util.slicedmap.WritableSlice; import org.jetbrains.jet.util.ReenteringLazyValueComputationException; +import org.jetbrains.jet.util.slicedmap.WritableSlice; import javax.inject.Inject; import java.util.*; @@ -216,7 +215,7 @@ public class BodyResolver { JetType type = typeInferrer.getType(scope, delegateExpression, NO_EXPECTED_TYPE, context.getOuterDataFlowInfo(), trace); if (type != null && supertype != null) { SimpleResolutionContext simpleResolutionContext = new SimpleResolutionContext( - trace, scope, supertype, context.getOuterDataFlowInfo(), ExpressionPosition.FREE, ContextDependency.INDEPENDENT, + trace, scope, supertype, context.getOuterDataFlowInfo(), ContextDependency.INDEPENDENT, ResolutionResultsCacheImpl.create(), LabelResolver.create(), expressionTypingServices.createExtension(scope, false), false); DataFlowUtils.checkType(type, delegateExpression, simpleResolutionContext); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DelegatedPropertyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DelegatedPropertyResolver.java index db568394862..1ee10306aa3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DelegatedPropertyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DelegatedPropertyResolver.java @@ -24,7 +24,6 @@ import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.diagnostics.rendering.Renderers; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo; -import org.jetbrains.jet.lang.resolve.calls.context.ExpressionPosition; import org.jetbrains.jet.lang.resolve.calls.inference.ConstraintPosition; import org.jetbrains.jet.lang.resolve.calls.inference.ConstraintSystem; import org.jetbrains.jet.lang.resolve.calls.inference.ConstraintSystemCompleter; @@ -164,7 +163,7 @@ public class DelegatedPropertyResolver { ExpressionTypingContext context = ExpressionTypingContext.newContext( expressionTypingServices, trace, scope, - DataFlowInfo.EMPTY, TypeUtils.NO_EXPECTED_TYPE, ExpressionPosition.FREE); + DataFlowInfo.EMPTY, TypeUtils.NO_EXPECTED_TYPE); Project project = context.expressionTypingServices.getProject(); boolean hasThis = propertyDescriptor.getReceiverParameter() != null || propertyDescriptor.getExpectedThisObject() != null; 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 f7eb444d8ae..ccdce292546 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptBodyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptBodyResolver.java @@ -26,7 +26,6 @@ import org.jetbrains.jet.lang.psi.JetNamedFunction; import org.jetbrains.jet.lang.psi.JetProperty; import org.jetbrains.jet.lang.psi.JetScript; import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo; -import org.jetbrains.jet.lang.resolve.calls.context.ExpressionPosition; import org.jetbrains.jet.lang.resolve.scopes.WritableScope; import org.jetbrains.jet.lang.types.ErrorUtils; import org.jetbrains.jet.lang.types.JetType; @@ -81,8 +80,8 @@ public class ScriptBodyResolver { trace, scope, DataFlowInfo.EMPTY, - NO_EXPECTED_TYPE, - ExpressionPosition.FREE); + NO_EXPECTED_TYPE + ); JetType returnType = expressionTypingServices.getBlockReturnedType(declaration.getBlockExpression(), CoercionStrategy.NO_COERCION, context).getType(); if (returnType == null) { returnType = ErrorUtils.createErrorType("getBlockReturnedType returned null"); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java index b336827f9f2..0bd0f687f07 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java @@ -25,7 +25,9 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.diagnostics.Errors; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.*; -import org.jetbrains.jet.lang.resolve.calls.context.*; +import org.jetbrains.jet.lang.resolve.calls.context.CallResolutionContext; +import org.jetbrains.jet.lang.resolve.calls.context.CheckValueArgumentsMode; +import org.jetbrains.jet.lang.resolve.calls.context.ResolutionContext; import org.jetbrains.jet.lang.resolve.calls.model.MutableDataFlowInfoForArguments; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCallImpl; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedValueArgument; @@ -51,6 +53,7 @@ import static org.jetbrains.jet.lang.resolve.BindingContextUtils.getRecordedType import static org.jetbrains.jet.lang.resolve.calls.CallResolverUtil.ResolveArgumentsMode; import static org.jetbrains.jet.lang.resolve.calls.CallResolverUtil.ResolveArgumentsMode.RESOLVE_FUNCTION_ARGUMENTS; import static org.jetbrains.jet.lang.resolve.calls.CallResolverUtil.ResolveArgumentsMode.SHAPE_FUNCTION_ARGUMENTS; +import static org.jetbrains.jet.lang.resolve.calls.context.ContextDependency.DEPENDENT; import static org.jetbrains.jet.lang.types.TypeUtils.*; public class ArgumentTypeResolver { @@ -211,8 +214,7 @@ public class ArgumentTypeResolver { if (recordedTypeInfo != null) { return recordedTypeInfo; } - ResolutionContext newContext = context.replaceExpectedType(TypeUtils.NO_EXPECTED_TYPE) - .replaceContextDependency(ContextDependency.DEPENDENT).replaceExpressionPosition(ExpressionPosition.FREE); + ResolutionContext newContext = context.replaceExpectedType(NO_EXPECTED_TYPE).replaceContextDependency(DEPENDENT); return expressionTypingServices.getTypeInfo(expression, newContext); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallExpressionResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallExpressionResolver.java index 6bbb89ccf23..e0be8949ed9 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallExpressionResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallExpressionResolver.java @@ -24,7 +24,10 @@ import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.TemporaryBindingTrace; -import org.jetbrains.jet.lang.resolve.calls.context.*; +import org.jetbrains.jet.lang.resolve.calls.context.BasicCallResolutionContext; +import org.jetbrains.jet.lang.resolve.calls.context.CheckValueArgumentsMode; +import org.jetbrains.jet.lang.resolve.calls.context.ResolutionContext; +import org.jetbrains.jet.lang.resolve.calls.context.TemporaryTraceAndCache; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCallWithTrace; import org.jetbrains.jet.lang.resolve.calls.results.OverloadResolutionResults; @@ -51,11 +54,12 @@ import java.util.Collections; import java.util.List; import static org.jetbrains.jet.lang.diagnostics.Errors.*; +import static org.jetbrains.jet.lang.psi.JetPsiUtil.isLHSOfDot; import static org.jetbrains.jet.lang.resolve.BindingContext.*; import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getStaticNestedClassesScope; +import static org.jetbrains.jet.lang.resolve.calls.context.ContextDependency.INDEPENDENT; import static org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue.NO_RECEIVER; import static org.jetbrains.jet.lang.types.TypeUtils.NO_EXPECTED_TYPE; -import static org.jetbrains.jet.lang.psi.JetPsiUtil.isLHSOfDot; public class CallExpressionResolver { @NotNull @@ -307,7 +311,7 @@ public class CallExpressionResolver { ) { JetTypeInfo typeInfo = getCallExpressionTypeInfoWithoutFinalTypeCheck( callExpression, receiver, callOperationNode, context); - if (context.contextDependency == ContextDependency.INDEPENDENT) { + if (context.contextDependency == INDEPENDENT) { DataFlowUtils.checkType(typeInfo, callExpression, context); } return typeInfo; @@ -399,9 +403,7 @@ public class CallExpressionResolver { // TODO : functions as values JetExpression selectorExpression = expression.getSelectorExpression(); JetExpression receiverExpression = expression.getReceiverExpression(); - ResolutionContext contextForReceiver = context - .replaceExpectedType(NO_EXPECTED_TYPE).replaceExpressionPosition(ExpressionPosition.LHS_OF_DOT) - .replaceContextDependency(ContextDependency.INDEPENDENT); + ResolutionContext contextForReceiver = context.replaceExpectedType(NO_EXPECTED_TYPE).replaceContextDependency(INDEPENDENT); JetTypeInfo receiverTypeInfo = expressionTypingServices.getTypeInfo(receiverExpression, contextForReceiver); JetType receiverType = receiverTypeInfo.getType(); if (selectorExpression == null) return JetTypeInfo.create(null, context.dataFlowInfo); @@ -432,7 +434,7 @@ public class CallExpressionResolver { context.trace.record(BindingContext.EXPRESSION_TYPE, selectorExpression, selectorReturnType); } JetTypeInfo typeInfo = JetTypeInfo.create(selectorReturnType, selectorReturnTypeInfo.getDataFlowInfo()); - if (context.contextDependency == ContextDependency.INDEPENDENT) { + if (context.contextDependency == INDEPENDENT) { DataFlowUtils.checkType(typeInfo, expression, context); } return typeInfo; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java index 43836145fc0..cf1c5e4cc0a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java @@ -58,7 +58,8 @@ import java.util.Set; import static org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor.NO_RECEIVER_PARAMETER; import static org.jetbrains.jet.lang.diagnostics.Errors.*; -import static org.jetbrains.jet.lang.resolve.BindingContext.*; +import static org.jetbrains.jet.lang.resolve.BindingContext.NON_DEFAULT_EXPRESSION_DATA_FLOW; +import static org.jetbrains.jet.lang.resolve.BindingContext.RESOLUTION_SCOPE; import static org.jetbrains.jet.lang.resolve.calls.CallResolverUtil.ResolveArgumentsMode.RESOLVE_FUNCTION_ARGUMENTS; import static org.jetbrains.jet.lang.resolve.calls.results.OverloadResolutionResults.Code.*; import static org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue.NO_RECEIVER; @@ -137,7 +138,7 @@ public class CallResolver { ) { return resolveFunctionCall(BasicCallResolutionContext.create( trace, scope, call, expectedType, dataFlowInfo, ContextDependency.INDEPENDENT, CheckValueArgumentsMode.ENABLED, - ExpressionPosition.FREE, ResolutionResultsCacheImpl.create(), LabelResolver.create(), null, + ResolutionResultsCacheImpl.create(), LabelResolver.create(), null, expressionTypingServices.createExtension(scope, isAnnotationContext), isAnnotationContext)); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/BasicCallResolutionContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/BasicCallResolutionContext.java index bea3c93f48c..55ecd9c9f6e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/BasicCallResolutionContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/BasicCallResolutionContext.java @@ -37,7 +37,6 @@ public class BasicCallResolutionContext extends CallResolutionContext @NotNull DataFlowInfo dataFlowInfo, @NotNull ContextDependency contextDependency, @NotNull CheckValueArgumentsMode checkArguments, - @NotNull ExpressionPosition expressionPosition, @NotNull ResolutionResultsCache resolutionResultsCache, @NotNull LabelResolver labelResolver, @Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments, @NotNull CallResolverExtension callResolverExtension, boolean isAnnotationContext ) { - super(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, expressionPosition, resolutionResultsCache, - labelResolver, dataFlowInfoForArguments, callResolverExtension, isAnnotationContext); + super(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, resolutionResultsCache, labelResolver, + dataFlowInfoForArguments, callResolverExtension, isAnnotationContext); this.candidateCall = candidateCall; this.tracing = tracing; } @@ -66,7 +65,7 @@ public final class CallCandidateResolutionContext return new CallCandidateResolutionContext( candidateCall, tracing, trace, context.scope, call, context.expectedType, context.dataFlowInfo, context.contextDependency, context.checkArguments, - context.expressionPosition, context.resolutionResultsCache, context.labelResolver, context.dataFlowInfoForArguments, + context.resolutionResultsCache, context.labelResolver, context.dataFlowInfoForArguments, context.callResolverExtension, context.isAnnotationContext); } @@ -81,9 +80,8 @@ public final class CallCandidateResolutionContext ) { return new CallCandidateResolutionContext( candidateCall, tracing, context.trace, context.scope, context.call, context.expectedType, - context.dataFlowInfo, context.contextDependency, context.checkArguments, context.expressionPosition, - context.resolutionResultsCache, context.labelResolver, context.dataFlowInfoForArguments, context.callResolverExtension, - context.isAnnotationContext); + context.dataFlowInfo, context.contextDependency, context.checkArguments, context.resolutionResultsCache, + context.labelResolver, context.dataFlowInfoForArguments, context.callResolverExtension, context.isAnnotationContext); } @Override @@ -92,15 +90,13 @@ public final class CallCandidateResolutionContext @NotNull JetScope scope, @NotNull DataFlowInfo dataFlowInfo, @NotNull JetType expectedType, - @NotNull ExpressionPosition expressionPosition, @NotNull ContextDependency contextDependency, @NotNull ResolutionResultsCache resolutionResultsCache, @NotNull LabelResolver labelResolver ) { return new CallCandidateResolutionContext( - candidateCall, tracing, trace, scope, call, expectedType, dataFlowInfo, contextDependency, - checkArguments, expressionPosition, resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, - isAnnotationContext); + candidateCall, tracing, trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, + resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, isAnnotationContext); } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/CallResolutionContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/CallResolutionContext.java index da7c82da1c2..eb1e31ca565 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/CallResolutionContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/CallResolutionContext.java @@ -42,7 +42,6 @@ public abstract class CallResolutionContext extends C @NotNull Collection> candidates, @NotNull JetReferenceExpression reference, @NotNull TracingStrategy tracing, BindingTrace trace, JetScope scope, Call call, JetType expectedType, DataFlowInfo dataFlowInfo, ContextDependency contextDependency, CheckValueArgumentsMode checkArguments, - ExpressionPosition expressionPosition, ResolutionResultsCache resolutionResultsCache, - @NotNull LabelResolver labelResolver, @Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments, - @NotNull CallResolverExtension callResolverExtension, boolean isAnnotationContext + ResolutionResultsCache resolutionResultsCache, @NotNull LabelResolver labelResolver, + @Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments, @NotNull CallResolverExtension callResolverExtension, + boolean isAnnotationContext ) { - super(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, expressionPosition, resolutionResultsCache, + super(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, isAnnotationContext); this.candidates = candidates; this.reference = reference; @@ -69,7 +69,7 @@ public class ResolutionTask extends C this(candidates, reference, tracing != null ? tracing : TracingStrategyImpl.create(reference, context.call), context.trace, context.scope, context.call, context.expectedType, context.dataFlowInfo, context.contextDependency, context.checkArguments, - context.expressionPosition, context.resolutionResultsCache, context.labelResolver, context.dataFlowInfoForArguments, + context.resolutionResultsCache, context.labelResolver, context.dataFlowInfoForArguments, context.callResolverExtension, context.isAnnotationContext); } @@ -108,14 +108,13 @@ public class ResolutionTask extends C @NotNull JetScope scope, @NotNull DataFlowInfo dataFlowInfo, @NotNull JetType expectedType, - @NotNull ExpressionPosition expressionPosition, @NotNull ContextDependency contextDependency, @NotNull ResolutionResultsCache resolutionResultsCache, @NotNull LabelResolver labelResolver ) { ResolutionTask newTask = new ResolutionTask( candidates, reference, tracing, trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, - expressionPosition, resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, isAnnotationContext); + resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, isAnnotationContext); newTask.setCheckingStrategy(checkingStrategy); return newTask; } @@ -128,7 +127,7 @@ public class ResolutionTask extends C public ResolutionTask replaceCall(@NotNull Call newCall) { return new ResolutionTask( candidates, reference, tracing, trace, scope, newCall, expectedType, dataFlowInfo, contextDependency, checkArguments, - expressionPosition, resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, isAnnotationContext); + resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, isAnnotationContext); } public interface DescriptorCheckStrategy { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingContext.java index 922badf0be3..754788d59a4 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingContext.java @@ -38,10 +38,9 @@ public class ExpressionTypingContext extends ResolutionContext functions = resolveFakeCall( context, ReceiverValue.NO_RECEIVER, Name.identifier(name), parameterTypes);