@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
|
||||
+5
-3
@@ -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);
|
||||
}
|
||||
|
||||
+9
-7
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
+11
-13
@@ -37,7 +37,6 @@ public class BasicCallResolutionContext extends CallResolutionContext<BasicCallR
|
||||
@NotNull DataFlowInfo dataFlowInfo,
|
||||
@NotNull ContextDependency contextDependency,
|
||||
@NotNull CheckValueArgumentsMode checkArguments,
|
||||
@NotNull ExpressionPosition expressionPosition,
|
||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||
@NotNull LabelResolver labelResolver,
|
||||
@Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments,
|
||||
@@ -45,8 +44,8 @@ public class BasicCallResolutionContext extends CallResolutionContext<BasicCallR
|
||||
boolean isAnnotationContext
|
||||
) {
|
||||
return new BasicCallResolutionContext(
|
||||
trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, expressionPosition,
|
||||
resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, isAnnotationContext);
|
||||
trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, resolutionResultsCache, labelResolver,
|
||||
dataFlowInfoForArguments, callResolverExtension, isAnnotationContext);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -56,8 +55,8 @@ public class BasicCallResolutionContext extends CallResolutionContext<BasicCallR
|
||||
) {
|
||||
return create(
|
||||
context.trace, context.scope, call, context.expectedType, context.dataFlowInfo, context.contextDependency, checkArguments,
|
||||
context.expressionPosition, context.resolutionResultsCache, context.labelResolver, dataFlowInfoForArguments,
|
||||
context.callResolverExtension, context.isAnnotationContext);
|
||||
context.resolutionResultsCache, context.labelResolver, dataFlowInfoForArguments, context.callResolverExtension,
|
||||
context.isAnnotationContext);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -70,12 +69,12 @@ public class BasicCallResolutionContext extends CallResolutionContext<BasicCallR
|
||||
private BasicCallResolutionContext(
|
||||
BindingTrace trace, JetScope scope, Call call, JetType expectedType,
|
||||
DataFlowInfo dataFlowInfo, ContextDependency contextDependency, CheckValueArgumentsMode checkArguments,
|
||||
ExpressionPosition expressionPosition, ResolutionResultsCache resolutionResultsCache,
|
||||
LabelResolver labelResolver, MutableDataFlowInfoForArguments dataFlowInfoForArguments,
|
||||
CallResolverExtension callResolverExtension, boolean isAnnotationContext
|
||||
ResolutionResultsCache resolutionResultsCache, LabelResolver labelResolver,
|
||||
MutableDataFlowInfoForArguments dataFlowInfoForArguments, 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);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -84,13 +83,12 @@ public class BasicCallResolutionContext extends CallResolutionContext<BasicCallR
|
||||
@NotNull JetScope scope,
|
||||
@NotNull DataFlowInfo dataFlowInfo,
|
||||
@NotNull JetType expectedType,
|
||||
@NotNull ExpressionPosition expressionPosition,
|
||||
@NotNull ContextDependency contextDependency,
|
||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||
@NotNull LabelResolver labelResolver
|
||||
) {
|
||||
return create(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, expressionPosition,
|
||||
resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, isAnnotationContext);
|
||||
return create(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, resolutionResultsCache,
|
||||
labelResolver, dataFlowInfoForArguments, callResolverExtension, isAnnotationContext);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+7
-11
@@ -46,15 +46,14 @@ public final class CallCandidateResolutionContext<D extends CallableDescriptor>
|
||||
@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<D extends CallableDescriptor>
|
||||
return new CallCandidateResolutionContext<D>(
|
||||
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<D extends CallableDescriptor>
|
||||
) {
|
||||
return new CallCandidateResolutionContext<D>(
|
||||
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<D extends CallableDescriptor>
|
||||
@NotNull JetScope scope,
|
||||
@NotNull DataFlowInfo dataFlowInfo,
|
||||
@NotNull JetType expectedType,
|
||||
@NotNull ExpressionPosition expressionPosition,
|
||||
@NotNull ContextDependency contextDependency,
|
||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||
@NotNull LabelResolver labelResolver
|
||||
) {
|
||||
return new CallCandidateResolutionContext<D>(
|
||||
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
|
||||
|
||||
+3
-3
@@ -42,7 +42,6 @@ public abstract class CallResolutionContext<Context extends CallResolutionContex
|
||||
@NotNull DataFlowInfo dataFlowInfo,
|
||||
@NotNull ContextDependency contextDependency,
|
||||
@NotNull CheckValueArgumentsMode checkArguments,
|
||||
@NotNull ExpressionPosition expressionPosition,
|
||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||
@NotNull LabelResolver labelResolver,
|
||||
@SuppressWarnings("NullableProblems")
|
||||
@@ -50,8 +49,8 @@ public abstract class CallResolutionContext<Context extends CallResolutionContex
|
||||
@NotNull CallResolverExtension callResolverExtension,
|
||||
boolean isAnnotationContext
|
||||
) {
|
||||
super(trace, scope, expectedType, dataFlowInfo, expressionPosition, contextDependency, resolutionResultsCache, labelResolver,
|
||||
callResolverExtension, isAnnotationContext);
|
||||
super(trace, scope, expectedType, dataFlowInfo, contextDependency, resolutionResultsCache, labelResolver, callResolverExtension,
|
||||
isAnnotationContext);
|
||||
this.call = call;
|
||||
this.checkArguments = checkArguments;
|
||||
if (dataFlowInfoForArguments != null) {
|
||||
@@ -65,6 +64,7 @@ public abstract class CallResolutionContext<Context extends CallResolutionContex
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public BasicCallResolutionContext toBasic() {
|
||||
return BasicCallResolutionContext.create(this, call, checkArguments);
|
||||
}
|
||||
|
||||
-22
@@ -1,22 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2013 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.jet.lang.resolve.calls.context;
|
||||
|
||||
public enum ExpressionPosition {
|
||||
LHS_OF_DOT, // allows all free expressions and additionally packages, class objects, 'super', 'this'
|
||||
FREE // statements, function arguments, etc.
|
||||
}
|
||||
+9
-24
@@ -31,7 +31,6 @@ public abstract class ResolutionContext<Context extends ResolutionContext<Contex
|
||||
public final JetScope scope;
|
||||
public final JetType expectedType;
|
||||
public final DataFlowInfo dataFlowInfo;
|
||||
public final ExpressionPosition expressionPosition;
|
||||
public final ContextDependency contextDependency;
|
||||
public final ResolutionResultsCache resolutionResultsCache;
|
||||
public final LabelResolver labelResolver;
|
||||
@@ -43,7 +42,6 @@ public abstract class ResolutionContext<Context extends ResolutionContext<Contex
|
||||
@NotNull JetScope scope,
|
||||
@NotNull JetType expectedType,
|
||||
@NotNull DataFlowInfo dataFlowInfo,
|
||||
@NotNull ExpressionPosition expressionPosition,
|
||||
@NotNull ContextDependency contextDependency,
|
||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||
@NotNull LabelResolver labelResolver,
|
||||
@@ -54,7 +52,6 @@ public abstract class ResolutionContext<Context extends ResolutionContext<Contex
|
||||
this.scope = scope;
|
||||
this.expectedType = expectedType;
|
||||
this.dataFlowInfo = dataFlowInfo;
|
||||
this.expressionPosition = expressionPosition;
|
||||
this.contextDependency = contextDependency;
|
||||
this.resolutionResultsCache = resolutionResultsCache;
|
||||
this.labelResolver = labelResolver;
|
||||
@@ -67,63 +64,51 @@ public abstract class ResolutionContext<Context extends ResolutionContext<Contex
|
||||
@NotNull JetScope scope,
|
||||
@NotNull DataFlowInfo dataFlowInfo,
|
||||
@NotNull JetType expectedType,
|
||||
@NotNull ExpressionPosition expressionPosition,
|
||||
@NotNull ContextDependency contextDependency,
|
||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||
@NotNull LabelResolver labelResolver
|
||||
);
|
||||
|
||||
protected abstract Context self();
|
||||
|
||||
public Context replaceBindingTrace(@NotNull BindingTrace trace) {
|
||||
if (this.trace == trace) return self();
|
||||
return create(trace, scope, dataFlowInfo, expectedType, expressionPosition, contextDependency, resolutionResultsCache,
|
||||
labelResolver);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Context replaceExpressionPosition(@NotNull ExpressionPosition expressionPosition) {
|
||||
if (expressionPosition == this.expressionPosition) return self();
|
||||
return create(trace, scope, dataFlowInfo, expectedType, expressionPosition, contextDependency, resolutionResultsCache,
|
||||
labelResolver);
|
||||
public Context replaceBindingTrace(@NotNull BindingTrace trace) {
|
||||
if (this.trace == trace) return self();
|
||||
return create(trace, scope, dataFlowInfo, expectedType, contextDependency, resolutionResultsCache, labelResolver);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Context replaceDataFlowInfo(@NotNull DataFlowInfo newDataFlowInfo) {
|
||||
if (newDataFlowInfo == dataFlowInfo) return self();
|
||||
return create(trace, scope, newDataFlowInfo, expectedType, expressionPosition, contextDependency, resolutionResultsCache,
|
||||
labelResolver);
|
||||
return create(trace, scope, newDataFlowInfo, expectedType, contextDependency, resolutionResultsCache, labelResolver);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Context replaceExpectedType(@Nullable JetType newExpectedType) {
|
||||
if (newExpectedType == null) return replaceExpectedType(TypeUtils.NO_EXPECTED_TYPE);
|
||||
if (expectedType == newExpectedType) return self();
|
||||
return create(trace, scope, dataFlowInfo, newExpectedType, expressionPosition, contextDependency, resolutionResultsCache,
|
||||
labelResolver);
|
||||
return create(trace, scope, dataFlowInfo, newExpectedType, contextDependency, resolutionResultsCache, labelResolver);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Context replaceScope(@NotNull JetScope newScope) {
|
||||
if (newScope == scope) return self();
|
||||
return create(trace, newScope, dataFlowInfo, expectedType, expressionPosition, contextDependency, resolutionResultsCache,
|
||||
labelResolver);
|
||||
return create(trace, newScope, dataFlowInfo, expectedType, contextDependency, resolutionResultsCache, labelResolver);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Context replaceContextDependency(@NotNull ContextDependency newContextDependency) {
|
||||
if (newContextDependency == contextDependency) return self();
|
||||
return create(trace, scope, dataFlowInfo, expectedType, expressionPosition, newContextDependency, resolutionResultsCache,
|
||||
labelResolver);
|
||||
return create(trace, scope, dataFlowInfo, expectedType, newContextDependency, resolutionResultsCache, labelResolver);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Context replaceResolutionResultsCache(@NotNull ResolutionResultsCache newResolutionResultsCache) {
|
||||
if (newResolutionResultsCache == resolutionResultsCache) return self();
|
||||
return create(trace, scope, dataFlowInfo, expectedType, expressionPosition, contextDependency, newResolutionResultsCache,
|
||||
labelResolver);
|
||||
return create(trace, scope, dataFlowInfo, expectedType, contextDependency, newResolutionResultsCache, labelResolver);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Context replaceTraceAndCache(@NotNull TemporaryTraceAndCache traceAndCache) {
|
||||
return replaceBindingTrace(traceAndCache.trace).replaceResolutionResultsCache(traceAndCache.cache);
|
||||
}
|
||||
|
||||
+20
-6
@@ -1,3 +1,19 @@
|
||||
/*
|
||||
* Copyright 2010-2013 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.jet.lang.resolve.calls.context;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -14,15 +30,14 @@ public class SimpleResolutionContext extends ResolutionContext<SimpleResolutionC
|
||||
@NotNull JetScope scope,
|
||||
@NotNull JetType expectedType,
|
||||
@NotNull DataFlowInfo dataFlowInfo,
|
||||
@NotNull ExpressionPosition expressionPosition,
|
||||
@NotNull ContextDependency contextDependency,
|
||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||
@NotNull LabelResolver labelResolver,
|
||||
@NotNull CallResolverExtension callResolverExtension,
|
||||
boolean isAnnotationContext
|
||||
) {
|
||||
super(trace, scope, expectedType, dataFlowInfo, expressionPosition, contextDependency, resolutionResultsCache, labelResolver,
|
||||
callResolverExtension, isAnnotationContext);
|
||||
super(trace, scope, expectedType, dataFlowInfo, contextDependency, resolutionResultsCache, labelResolver, callResolverExtension,
|
||||
isAnnotationContext);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -31,14 +46,13 @@ public class SimpleResolutionContext extends ResolutionContext<SimpleResolutionC
|
||||
@NotNull JetScope scope,
|
||||
@NotNull DataFlowInfo dataFlowInfo,
|
||||
@NotNull JetType expectedType,
|
||||
@NotNull ExpressionPosition expressionPosition,
|
||||
@NotNull ContextDependency contextDependency,
|
||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||
@NotNull LabelResolver labelResolver
|
||||
) {
|
||||
return new SimpleResolutionContext(
|
||||
trace, scope, expectedType, dataFlowInfo, expressionPosition, contextDependency, resolutionResultsCache, labelResolver,
|
||||
callResolverExtension, isAnnotationContext);
|
||||
trace, scope, expectedType, dataFlowInfo, contextDependency, resolutionResultsCache, labelResolver, callResolverExtension,
|
||||
isAnnotationContext);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+7
-8
@@ -49,11 +49,11 @@ public class ResolutionTask<D extends CallableDescriptor, F extends D> extends C
|
||||
@NotNull Collection<ResolutionCandidate<D>> 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<D extends CallableDescriptor, F extends D> 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<D extends CallableDescriptor, F extends D> extends C
|
||||
@NotNull JetScope scope,
|
||||
@NotNull DataFlowInfo dataFlowInfo,
|
||||
@NotNull JetType expectedType,
|
||||
@NotNull ExpressionPosition expressionPosition,
|
||||
@NotNull ContextDependency contextDependency,
|
||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||
@NotNull LabelResolver labelResolver
|
||||
) {
|
||||
ResolutionTask<D, F> newTask = new ResolutionTask<D, F>(
|
||||
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<D extends CallableDescriptor, F extends D> extends C
|
||||
public ResolutionTask<D, F> replaceCall(@NotNull Call newCall) {
|
||||
return new ResolutionTask<D, F>(
|
||||
candidates, reference, tracing, trace, scope, newCall, expectedType, dataFlowInfo, contextDependency, checkArguments,
|
||||
expressionPosition, resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, isAnnotationContext);
|
||||
resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, isAnnotationContext);
|
||||
}
|
||||
|
||||
public interface DescriptorCheckStrategy {
|
||||
|
||||
+8
-13
@@ -38,10 +38,9 @@ public class ExpressionTypingContext extends ResolutionContext<ExpressionTypingC
|
||||
@NotNull BindingTrace trace,
|
||||
@NotNull JetScope scope,
|
||||
@NotNull DataFlowInfo dataFlowInfo,
|
||||
@NotNull JetType expectedType,
|
||||
@NotNull ExpressionPosition expressionPosition
|
||||
@NotNull JetType expectedType
|
||||
) {
|
||||
return newContext(expressionTypingServices, trace, scope, dataFlowInfo, expectedType, expressionPosition,
|
||||
return newContext(expressionTypingServices, trace, scope, dataFlowInfo, expectedType,
|
||||
ContextDependency.INDEPENDENT, ResolutionResultsCacheImpl.create(), LabelResolver.create(),
|
||||
expressionTypingServices.createExtension(scope, false), false);
|
||||
}
|
||||
@@ -52,7 +51,7 @@ public class ExpressionTypingContext extends ResolutionContext<ExpressionTypingC
|
||||
@NotNull ResolutionContext resolutionContext
|
||||
) {
|
||||
return newContext(expressionTypingServices, resolutionContext.trace, resolutionContext.scope, resolutionContext.dataFlowInfo,
|
||||
resolutionContext.expectedType, resolutionContext.expressionPosition, resolutionContext.contextDependency,
|
||||
resolutionContext.expectedType, resolutionContext.contextDependency,
|
||||
resolutionContext.resolutionResultsCache, resolutionContext.labelResolver,
|
||||
resolutionContext.callResolverExtension, resolutionContext.isAnnotationContext);
|
||||
}
|
||||
@@ -64,16 +63,14 @@ public class ExpressionTypingContext extends ResolutionContext<ExpressionTypingC
|
||||
@NotNull JetScope scope,
|
||||
@NotNull DataFlowInfo dataFlowInfo,
|
||||
@NotNull JetType expectedType,
|
||||
@NotNull ExpressionPosition expressionPosition,
|
||||
@NotNull ContextDependency contextDependency,
|
||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||
@NotNull LabelResolver labelResolver,
|
||||
@NotNull CallResolverExtension callResolverExtension,
|
||||
boolean isAnnotationContext
|
||||
) {
|
||||
return new ExpressionTypingContext(
|
||||
expressionTypingServices, labelResolver, trace, scope, dataFlowInfo, expectedType, expressionPosition, contextDependency, resolutionResultsCache,
|
||||
callResolverExtension, isAnnotationContext);
|
||||
return new ExpressionTypingContext(expressionTypingServices, labelResolver, trace, scope, dataFlowInfo, expectedType,
|
||||
contextDependency, resolutionResultsCache, callResolverExtension, isAnnotationContext);
|
||||
}
|
||||
|
||||
public final ExpressionTypingServices expressionTypingServices;
|
||||
@@ -87,14 +84,13 @@ public class ExpressionTypingContext extends ResolutionContext<ExpressionTypingC
|
||||
@NotNull JetScope scope,
|
||||
@NotNull DataFlowInfo dataFlowInfo,
|
||||
@NotNull JetType expectedType,
|
||||
@NotNull ExpressionPosition expressionPosition,
|
||||
@NotNull ContextDependency contextDependency,
|
||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||
@NotNull CallResolverExtension callResolverExtension,
|
||||
boolean isAnnotationContext
|
||||
) {
|
||||
super(trace, scope, expectedType, dataFlowInfo, expressionPosition, contextDependency, resolutionResultsCache, labelResolver,
|
||||
callResolverExtension, isAnnotationContext);
|
||||
super(trace, scope, expectedType, dataFlowInfo, contextDependency, resolutionResultsCache, labelResolver, callResolverExtension,
|
||||
isAnnotationContext);
|
||||
this.expressionTypingServices = expressionTypingServices;
|
||||
}
|
||||
|
||||
@@ -104,13 +100,12 @@ public class ExpressionTypingContext extends ResolutionContext<ExpressionTypingC
|
||||
@NotNull JetScope scope,
|
||||
@NotNull DataFlowInfo dataFlowInfo,
|
||||
@NotNull JetType expectedType,
|
||||
@NotNull ExpressionPosition expressionPosition,
|
||||
@NotNull ContextDependency contextDependency,
|
||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||
@NotNull LabelResolver labelResolver
|
||||
) {
|
||||
return new ExpressionTypingContext(expressionTypingServices, this.labelResolver, trace, scope, dataFlowInfo, expectedType,
|
||||
expressionPosition, contextDependency, resolutionResultsCache, callResolverExtension, isAnnotationContext);
|
||||
contextDependency, resolutionResultsCache, callResolverExtension, isAnnotationContext);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+5
-9
@@ -34,7 +34,6 @@ import org.jetbrains.jet.lang.resolve.calls.CallResolverExtension;
|
||||
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
|
||||
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
|
||||
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.ResolutionContext;
|
||||
import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||
@@ -162,9 +161,7 @@ public class ExpressionTypingServices {
|
||||
|
||||
@NotNull
|
||||
public JetTypeInfo getTypeInfo(@NotNull JetScope scope, @NotNull JetExpression expression, @NotNull JetType expectedType, @NotNull DataFlowInfo dataFlowInfo, @NotNull BindingTrace trace) {
|
||||
ExpressionTypingContext context = ExpressionTypingContext.newContext(
|
||||
this, trace, scope, dataFlowInfo, expectedType, ExpressionPosition.FREE
|
||||
);
|
||||
ExpressionTypingContext context = ExpressionTypingContext.newContext(this, trace, scope, dataFlowInfo, expectedType);
|
||||
return expressionTypingFacade.getTypeInfo(expression, context);
|
||||
}
|
||||
|
||||
@@ -188,8 +185,7 @@ public class ExpressionTypingServices {
|
||||
}
|
||||
}
|
||||
checkFunctionReturnType(function, ExpressionTypingContext.newContext(
|
||||
this, trace, functionInnerScope, dataFlowInfo, expectedReturnType != null ? expectedReturnType : NO_EXPECTED_TYPE,
|
||||
ExpressionPosition.FREE
|
||||
this, trace, functionInnerScope, dataFlowInfo, expectedReturnType != null ? expectedReturnType : NO_EXPECTED_TYPE
|
||||
));
|
||||
}
|
||||
|
||||
@@ -255,7 +251,7 @@ public class ExpressionTypingServices {
|
||||
JetScope functionInnerScope = FunctionDescriptorUtil.getFunctionInnerScope(outerScope, functionDescriptor, trace);
|
||||
|
||||
ExpressionTypingContext context = ExpressionTypingContext.newContext(
|
||||
this, trace, functionInnerScope, dataFlowInfo, NO_EXPECTED_TYPE, ExpressionPosition.FREE
|
||||
this, trace, functionInnerScope, dataFlowInfo, NO_EXPECTED_TYPE
|
||||
);
|
||||
JetTypeInfo typeInfo = expressionTypingFacade.getTypeInfo(bodyExpression, context, function.hasBlockBody());
|
||||
|
||||
@@ -351,8 +347,8 @@ public class ExpressionTypingServices {
|
||||
}
|
||||
|
||||
private ExpressionTypingContext createContext(ExpressionTypingContext oldContext, BindingTrace trace, WritableScope scope, DataFlowInfo dataFlowInfo, JetType expectedType) {
|
||||
return ExpressionTypingContext.newContext(this, trace, scope, dataFlowInfo, expectedType, oldContext.expressionPosition,
|
||||
oldContext.contextDependency, oldContext.resolutionResultsCache, oldContext.labelResolver,
|
||||
return ExpressionTypingContext.newContext(this, trace, scope, dataFlowInfo, expectedType, oldContext.contextDependency,
|
||||
oldContext.resolutionResultsCache, oldContext.labelResolver,
|
||||
oldContext.callResolverExtension, oldContext.isAnnotationContext);
|
||||
}
|
||||
|
||||
|
||||
+2
-4
@@ -28,13 +28,12 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.JetNodeTypes;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory;
|
||||
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
|
||||
import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory;
|
||||
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.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.ConstraintSystemImpl;
|
||||
@@ -218,8 +217,7 @@ public class ExpressionTypingUtils {
|
||||
new BindingTraceContext(),
|
||||
scope,
|
||||
DataFlowInfo.EMPTY,
|
||||
TypeUtils.NO_EXPECTED_TYPE,
|
||||
ExpressionPosition.FREE
|
||||
TypeUtils.NO_EXPECTED_TYPE
|
||||
);
|
||||
return ControlStructureTypingVisitor.checkIterableConvention(expressionReceiver, context) != null;
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ import org.jetbrains.jet.di.InjectorForTests;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
||||
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.model.ResolvedCall;
|
||||
import org.jetbrains.jet.lang.resolve.calls.results.OverloadResolutionResults;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaClass;
|
||||
@@ -135,7 +134,7 @@ public class JetExpectedResolveDataUtil {
|
||||
|
||||
ExpressionTypingContext context = ExpressionTypingContext.newContext(
|
||||
expressionTypingServices, new BindingTraceContext(), classDescriptor.getDefaultType().getMemberScope(),
|
||||
DataFlowInfo.EMPTY, TypeUtils.NO_EXPECTED_TYPE, ExpressionPosition.FREE);
|
||||
DataFlowInfo.EMPTY, TypeUtils.NO_EXPECTED_TYPE);
|
||||
|
||||
OverloadResolutionResults<FunctionDescriptor> functions = resolveFakeCall(
|
||||
context, ReceiverValue.NO_RECEIVER, Name.identifier(name), parameterTypes);
|
||||
|
||||
Reference in New Issue
Block a user