made delegated property resolver a component

from DelegatedPropertyUtils
This commit is contained in:
Svetlana Isakova
2013-09-30 13:06:45 +04:00
parent 0cd131fcfe
commit a455467f9e
10 changed files with 91 additions and 36 deletions
@@ -54,6 +54,7 @@ import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
import org.jetbrains.jet.lang.resolve.OverloadResolver;
import org.jetbrains.jet.lang.resolve.OverrideResolver;
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
import org.jetbrains.jet.lang.types.expressions.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
@@ -113,6 +114,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
private final OverloadResolver overloadResolver;
private final OverrideResolver overrideResolver;
private final TypeHierarchyResolver typeHierarchyResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final ScriptBodyResolver scriptBodyResolver;
private final JavaClassResolver javaClassResolver;
private final JavaAnnotationResolver javaAnnotationResolver;
@@ -173,6 +175,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
this.overloadResolver = new OverloadResolver();
this.overrideResolver = new OverrideResolver();
this.typeHierarchyResolver = new TypeHierarchyResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.scriptBodyResolver = new ScriptBodyResolver();
this.javaClassResolver = new JavaClassResolver();
this.javaAnnotationResolver = new JavaAnnotationResolver();
@@ -207,6 +210,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
this.bodyResolver.setContext(topDownAnalysisContext);
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
this.bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.bodyResolver.setDescriptorResolver(descriptorResolver);
this.bodyResolver.setExpressionTypingServices(expressionTypingServices);
this.bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
@@ -219,6 +223,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
this.declarationsChecker.setTrace(bindingTrace);
this.descriptorResolver.setAnnotationResolver(annotationResolver);
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
this.descriptorResolver.setTypeResolver(typeResolver);
@@ -307,6 +312,8 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver);
typeHierarchyResolver.setTrace(bindingTrace);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace);
@@ -30,6 +30,7 @@ import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.types.expressions.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.TypeResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
@@ -57,6 +58,7 @@ public class InjectorForBodyResolve {
private final ExpressionTypingServices expressionTypingServices;
private final CallExpressionResolver callExpressionResolver;
private final DescriptorResolver descriptorResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final TypeResolver typeResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final CandidateResolver candidateResolver;
@@ -86,6 +88,7 @@ public class InjectorForBodyResolve {
this.expressionTypingServices = new ExpressionTypingServices();
this.callExpressionResolver = new CallExpressionResolver();
this.descriptorResolver = new DescriptorResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.typeResolver = new TypeResolver();
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.candidateResolver = new CandidateResolver();
@@ -99,6 +102,7 @@ public class InjectorForBodyResolve {
this.bodyResolver.setContext(bodiesResolveContext);
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
this.bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.bodyResolver.setDescriptorResolver(descriptorResolver);
this.bodyResolver.setExpressionTypingServices(expressionTypingServices);
this.bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
@@ -128,9 +132,12 @@ public class InjectorForBodyResolve {
callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setAnnotationResolver(annotationResolver);
descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
descriptorResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setTypeResolver(typeResolver);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
typeResolver.setAnnotationResolver(annotationResolver);
typeResolver.setModuleDescriptor(moduleDescriptor);
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
@@ -28,6 +28,7 @@ import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.psi.JetImportsFactory;
import org.jetbrains.jet.lang.resolve.calls.CompositeExtension;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.types.expressions.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
@@ -50,6 +51,7 @@ public class InjectorForLazyResolve {
private final JetImportsFactory jetImportsFactory;
private final CompositeExtension compositeExtension;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final CallExpressionResolver callExpressionResolver;
private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver;
@@ -72,12 +74,14 @@ public class InjectorForLazyResolve {
this.jetImportsFactory = new JetImportsFactory();
this.compositeExtension = new CompositeExtension();
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.callExpressionResolver = new CallExpressionResolver();
this.callResolver = new CallResolver();
this.argumentTypeResolver = new ArgumentTypeResolver();
this.candidateResolver = new CandidateResolver();
this.descriptorResolver.setAnnotationResolver(annotationResolver);
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
this.descriptorResolver.setTypeResolver(typeResolver);
@@ -98,6 +102,8 @@ public class InjectorForLazyResolve {
this.jetImportsFactory.setProject(project);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
callResolver.setArgumentTypeResolver(argumentTypeResolver);
@@ -29,6 +29,7 @@ import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.types.expressions.DelegatedPropertyResolver;
import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy;
@@ -48,6 +49,7 @@ public class InjectorForMacros {
private final CandidateResolver candidateResolver;
private final CallExpressionResolver callExpressionResolver;
private final DescriptorResolver descriptorResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
public InjectorForMacros(
@NotNull Project project,
@@ -66,6 +68,7 @@ public class InjectorForMacros {
this.candidateResolver = new CandidateResolver();
this.callExpressionResolver = new CallExpressionResolver();
this.descriptorResolver = new DescriptorResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.expressionTypingServices.setAnnotationResolver(annotationResolver);
this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
@@ -96,9 +99,12 @@ public class InjectorForMacros {
callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setAnnotationResolver(annotationResolver);
descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
descriptorResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setTypeResolver(typeResolver);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
}
@PreDestroy
@@ -45,6 +45,7 @@ import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
import org.jetbrains.jet.lang.resolve.OverloadResolver;
import org.jetbrains.jet.lang.resolve.OverrideResolver;
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
import org.jetbrains.jet.lang.types.expressions.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy;
@@ -81,6 +82,7 @@ public class InjectorForTopDownAnalyzerBasic {
private final OverloadResolver overloadResolver;
private final OverrideResolver overrideResolver;
private final TypeHierarchyResolver typeHierarchyResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final ScriptBodyResolver scriptBodyResolver;
public InjectorForTopDownAnalyzerBasic(
@@ -119,6 +121,7 @@ public class InjectorForTopDownAnalyzerBasic {
this.overloadResolver = new OverloadResolver();
this.overrideResolver = new OverrideResolver();
this.typeHierarchyResolver = new TypeHierarchyResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.scriptBodyResolver = new ScriptBodyResolver();
this.topDownAnalyzer.setBodyResolver(bodyResolver);
@@ -139,6 +142,7 @@ public class InjectorForTopDownAnalyzerBasic {
this.bodyResolver.setContext(topDownAnalysisContext);
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
this.bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.bodyResolver.setDescriptorResolver(descriptorResolver);
this.bodyResolver.setExpressionTypingServices(expressionTypingServices);
this.bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
@@ -151,6 +155,7 @@ public class InjectorForTopDownAnalyzerBasic {
this.declarationsChecker.setTrace(bindingTrace);
this.descriptorResolver.setAnnotationResolver(annotationResolver);
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
this.descriptorResolver.setTypeResolver(typeResolver);
@@ -220,6 +225,8 @@ public class InjectorForTopDownAnalyzerBasic {
typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver);
typeHierarchyResolver.setTrace(bindingTrace);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace);
@@ -41,7 +41,7 @@ import org.jetbrains.jet.lang.resolve.scopes.*;
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue;
import org.jetbrains.jet.lang.types.*;
import org.jetbrains.jet.lang.types.expressions.DataFlowUtils;
import org.jetbrains.jet.lang.types.expressions.DelegatedPropertyUtils;
import org.jetbrains.jet.lang.types.expressions.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.types.expressions.LabelResolver;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
@@ -81,6 +81,8 @@ public class BodyResolver {
private DeclarationsChecker declarationsChecker;
@NotNull
private AnnotationResolver annotationResolver;
@NotNull
private DelegatedPropertyResolver delegatedPropertyResolver;
@Inject
public void setTopDownAnalysisParameters(@NotNull TopDownAnalysisParameters topDownAnalysisParameters) {
@@ -132,6 +134,11 @@ public class BodyResolver {
this.annotationResolver = annotationResolver;
}
@Inject
public void setDelegatedPropertyResolver(@NotNull DelegatedPropertyResolver delegatedPropertyResolver) {
this.delegatedPropertyResolver = delegatedPropertyResolver;
}
private void resolveBehaviorDeclarationBodies(@NotNull BodiesResolveContext bodiesResolveContext) {
// Initialize context
context = bodiesResolveContext;
@@ -543,12 +550,12 @@ public class BodyResolver {
}
}, true);
DelegatedPropertyUtils.resolveDelegatedPropertyGetMethod(propertyDescriptor, delegateExpression, delegateType,
expressionTypingServices, trace, accessorScope);
delegatedPropertyResolver.resolveDelegatedPropertyGetMethod(propertyDescriptor, delegateExpression, delegateType,
trace, accessorScope);
if (jetProperty.isVar()) {
DelegatedPropertyUtils.resolveDelegatedPropertySetMethod(propertyDescriptor, delegateExpression, delegateType,
expressionTypingServices, trace, accessorScope);
delegatedPropertyResolver.resolveDelegatedPropertySetMethod(propertyDescriptor, delegateExpression, delegateType,
trace, accessorScope);
}
}
@@ -570,9 +577,8 @@ public class BodyResolver {
TemporaryBindingTrace traceToResolveConventionMethods =
TemporaryBindingTrace.create(trace, "Trace to resolve delegated property convention methods");
OverloadResolutionResults<FunctionDescriptor>
getMethodResults = DelegatedPropertyUtils.getDelegatedPropertyConventionMethod(
propertyDescriptor, delegateExpression, returnType, expressionTypingServices,
traceToResolveConventionMethods, accessorScope, true);
getMethodResults = delegatedPropertyResolver.getDelegatedPropertyConventionMethod(
propertyDescriptor, delegateExpression, returnType, traceToResolveConventionMethods, accessorScope, true);
if (conventionMethodFound(getMethodResults)) {
FunctionDescriptor descriptor = getMethodResults.getResultingDescriptor();
@@ -585,9 +591,8 @@ public class BodyResolver {
if (!propertyDescriptor.isVar()) return;
OverloadResolutionResults<FunctionDescriptor> setMethodResults =
DelegatedPropertyUtils.getDelegatedPropertyConventionMethod(
propertyDescriptor, delegateExpression, returnType, expressionTypingServices,
traceToResolveConventionMethods, accessorScope, false);
delegatedPropertyResolver.getDelegatedPropertyConventionMethod(
propertyDescriptor, delegateExpression, returnType, traceToResolveConventionMethods, accessorScope, false);
if (conventionMethodFound(setMethodResults)) {
FunctionDescriptor descriptor = setMethodResults.getResultingDescriptor();
@@ -38,7 +38,7 @@ import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
import org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl;
import org.jetbrains.jet.lang.types.*;
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
import org.jetbrains.jet.lang.types.expressions.DelegatedPropertyUtils;
import org.jetbrains.jet.lang.types.expressions.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.lexer.JetKeywordToken;
@@ -65,6 +65,8 @@ public class DescriptorResolver {
private AnnotationResolver annotationResolver;
@NotNull
private ExpressionTypingServices expressionTypingServices;
@NotNull
private DelegatedPropertyResolver delegatedPropertyResolver;
@Inject
public void setTypeResolver(@NotNull TypeResolver typeResolver) {
@@ -81,6 +83,10 @@ public class DescriptorResolver {
this.expressionTypingServices = expressionTypingServices;
}
@Inject
public void setDelegatedPropertyResolver(@NotNull DelegatedPropertyResolver delegatedPropertyResolver) {
this.delegatedPropertyResolver = delegatedPropertyResolver;
}
public void resolveMutableClassDescriptor(
@NotNull JetClass classElement,
@@ -1093,9 +1099,8 @@ public class DescriptorResolver {
JetType type = expressionTypingServices.safeGetType(scope, delegateExpression, TypeUtils.NO_EXPECTED_TYPE, dataFlowInfo, trace);
JetScope accessorScope = JetScopeUtils.makeScopeForPropertyAccessor(propertyDescriptor, scope, this, trace);
JetType getterReturnType = DelegatedPropertyUtils
.getDelegatedPropertyGetMethodReturnType(propertyDescriptor, delegateExpression, type, expressionTypingServices, trace,
accessorScope);
JetType getterReturnType = delegatedPropertyResolver
.getDelegatedPropertyGetMethodReturnType(propertyDescriptor, delegateExpression, type, trace, accessorScope);
if (getterReturnType != null) {
return getterReturnType;
}
@@ -45,6 +45,7 @@ import org.jetbrains.jet.lang.types.TypeUtils;
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import javax.inject.Inject;
import java.util.List;
import static org.jetbrains.jet.lang.diagnostics.Errors.*;
@@ -53,34 +54,39 @@ import static org.jetbrains.jet.lang.psi.JetPsiFactory.createSimpleName;
import static org.jetbrains.jet.lang.resolve.BindingContext.*;
import static org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils.createFakeExpressionOfType;
public class DelegatedPropertyUtils {
public class DelegatedPropertyResolver {
@NotNull
private ExpressionTypingServices expressionTypingServices;
@Inject
public void setExpressionTypingServices(@NotNull ExpressionTypingServices expressionTypingServices) {
this.expressionTypingServices = expressionTypingServices;
}
@Nullable
public static JetType getDelegatedPropertyGetMethodReturnType(
public JetType getDelegatedPropertyGetMethodReturnType(
@NotNull PropertyDescriptor propertyDescriptor,
@NotNull JetExpression delegateExpression,
@NotNull JetType delegateType,
@NotNull ExpressionTypingServices expressionTypingServices,
@NotNull BindingTrace trace,
@NotNull JetScope scope
) {
resolveDelegatedPropertyConventionMethod(propertyDescriptor, delegateExpression, delegateType, expressionTypingServices, trace,
scope, true);
resolveDelegatedPropertyConventionMethod(propertyDescriptor, delegateExpression, delegateType, trace, scope, true);
ResolvedCall<FunctionDescriptor> resolvedCall =
trace.getBindingContext().get(DELEGATED_PROPERTY_RESOLVED_CALL, propertyDescriptor.getGetter());
return resolvedCall != null ? resolvedCall.getResultingDescriptor().getReturnType() : null;
}
public static void resolveDelegatedPropertyGetMethod(
public void resolveDelegatedPropertyGetMethod(
@NotNull PropertyDescriptor propertyDescriptor,
@NotNull JetExpression delegateExpression,
@NotNull JetType delegateType,
@NotNull ExpressionTypingServices expressionTypingServices,
@NotNull BindingTrace trace,
@NotNull JetScope scope
) {
JetType returnType = getDelegatedPropertyGetMethodReturnType(
propertyDescriptor, delegateExpression, delegateType, expressionTypingServices, trace, scope);
propertyDescriptor, delegateExpression, delegateType, trace, scope);
JetType propertyType = propertyDescriptor.getType();
/* Do not check return type of get() method of delegate for properties with DeferredType because property type is taken from it */
@@ -92,24 +98,21 @@ public class DelegatedPropertyUtils {
}
}
public static void resolveDelegatedPropertySetMethod(
public void resolveDelegatedPropertySetMethod(
@NotNull PropertyDescriptor propertyDescriptor,
@NotNull JetExpression delegateExpression,
@NotNull JetType delegateType,
@NotNull ExpressionTypingServices expressionTypingServices,
@NotNull BindingTrace trace,
@NotNull JetScope scope
) {
resolveDelegatedPropertyConventionMethod(propertyDescriptor, delegateExpression, delegateType, expressionTypingServices, trace,
scope, false);
resolveDelegatedPropertyConventionMethod(propertyDescriptor, delegateExpression, delegateType, trace, scope, false);
}
/* Resolve get() or set() methods from delegate */
private static void resolveDelegatedPropertyConventionMethod(
private void resolveDelegatedPropertyConventionMethod(
@NotNull PropertyDescriptor propertyDescriptor,
@NotNull JetExpression delegateExpression,
@NotNull JetType delegateType,
@NotNull ExpressionTypingServices expressionTypingServices,
@NotNull BindingTrace trace,
@NotNull JetScope scope,
boolean isGet
@@ -120,7 +123,7 @@ public class DelegatedPropertyUtils {
if (trace.getBindingContext().get(DELEGATED_PROPERTY_CALL, accessor) != null) return;
OverloadResolutionResults<FunctionDescriptor> functionResults = getDelegatedPropertyConventionMethod(
propertyDescriptor, delegateExpression, delegateType, expressionTypingServices, trace, scope, isGet);
propertyDescriptor, delegateExpression, delegateType, trace, scope, isGet);
Call call = trace.getBindingContext().get(DELEGATED_PROPERTY_CALL, accessor);
assert call != null : "'getDelegatedPropertyConventionMethod' didn't record a call";
@@ -148,11 +151,10 @@ public class DelegatedPropertyUtils {
}
/* Resolve get() or set() methods from delegate */
public static OverloadResolutionResults<FunctionDescriptor> getDelegatedPropertyConventionMethod(
public OverloadResolutionResults<FunctionDescriptor> getDelegatedPropertyConventionMethod(
@NotNull PropertyDescriptor propertyDescriptor,
@NotNull JetExpression delegateExpression,
@NotNull JetType delegateType,
@NotNull ExpressionTypingServices expressionTypingServices,
@NotNull BindingTrace trace,
@NotNull JetScope scope,
boolean isGet
@@ -191,7 +193,7 @@ public class DelegatedPropertyUtils {
return context.resolveCallWithGivenName(call, fakeCalleeExpression, functionName);
}
private static String renderCall(@NotNull Call call, @NotNull BindingContext context) {
private String renderCall(@NotNull Call call, @NotNull BindingContext context) {
JetExpression calleeExpression = call.getCalleeExpression();
assert calleeExpression != null : "CalleeExpression should exists for fake call of convention method";
StringBuilder builder = new StringBuilder(calleeExpression.getText());
@@ -205,7 +207,4 @@ public class DelegatedPropertyUtils {
builder.append(")");
return builder.toString();
}
private DelegatedPropertyUtils() {
}
}
@@ -26,6 +26,7 @@ import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.types.expressions.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
@@ -46,6 +47,7 @@ public class InjectorForTests {
private final Project project;
private final ModuleDescriptor moduleDescriptor;
private final AnnotationResolver annotationResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final CallExpressionResolver callExpressionResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final ArgumentTypeResolver argumentTypeResolver;
@@ -65,12 +67,14 @@ public class InjectorForTests {
this.project = project;
this.moduleDescriptor = moduleDescriptor;
this.annotationResolver = new AnnotationResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.callExpressionResolver = new CallExpressionResolver();
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.argumentTypeResolver = new ArgumentTypeResolver();
this.candidateResolver = new CandidateResolver();
this.descriptorResolver.setAnnotationResolver(annotationResolver);
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
this.descriptorResolver.setTypeResolver(typeResolver);
@@ -95,6 +99,8 @@ public class InjectorForTests {
annotationResolver.setCallResolver(callResolver);
annotationResolver.setExpressionTypingServices(expressionTypingServices);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
@@ -45,6 +45,7 @@ import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
import org.jetbrains.jet.lang.resolve.OverloadResolver;
import org.jetbrains.jet.lang.resolve.OverrideResolver;
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
import org.jetbrains.jet.lang.types.expressions.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy;
@@ -81,6 +82,7 @@ public class InjectorForTopDownAnalyzerForJs {
private final OverloadResolver overloadResolver;
private final OverrideResolver overrideResolver;
private final TypeHierarchyResolver typeHierarchyResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final ScriptBodyResolver scriptBodyResolver;
public InjectorForTopDownAnalyzerForJs(
@@ -118,6 +120,7 @@ public class InjectorForTopDownAnalyzerForJs {
this.overloadResolver = new OverloadResolver();
this.overrideResolver = new OverrideResolver();
this.typeHierarchyResolver = new TypeHierarchyResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.scriptBodyResolver = new ScriptBodyResolver();
this.topDownAnalyzer.setBodyResolver(bodyResolver);
@@ -138,6 +141,7 @@ public class InjectorForTopDownAnalyzerForJs {
this.bodyResolver.setContext(topDownAnalysisContext);
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
this.bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.bodyResolver.setDescriptorResolver(descriptorResolver);
this.bodyResolver.setExpressionTypingServices(expressionTypingServices);
this.bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
@@ -150,6 +154,7 @@ public class InjectorForTopDownAnalyzerForJs {
this.declarationsChecker.setTrace(bindingTrace);
this.descriptorResolver.setAnnotationResolver(annotationResolver);
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
this.descriptorResolver.setTypeResolver(typeResolver);
@@ -219,6 +224,8 @@ public class InjectorForTopDownAnalyzerForJs {
typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver);
typeHierarchyResolver.setTrace(bindingTrace);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace);