PlatformToKotlinClassMap injected into expression analyzers

This commit is contained in:
Andrey Breslav
2013-09-03 16:01:59 +04:00
parent 685bea6446
commit 9f4beece64
12 changed files with 76 additions and 16 deletions
@@ -30,6 +30,7 @@ import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedExternalSignatureResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedJavaResolverCache;
@@ -89,6 +90,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
private final JavaBridgeConfiguration javaBridgeConfiguration;
private final JavaDescriptorResolver javaDescriptorResolver;
private final PsiClassFinderImpl psiClassFinder;
private final JavaToKotlinClassMap javaToKotlinClassMap;
private final JavaClassFinderImpl javaClassFinder;
private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
private final TraceBasedJavaResolverCache traceBasedJavaResolverCache;
@@ -149,6 +151,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
this.javaBridgeConfiguration = new JavaBridgeConfiguration();
this.javaDescriptorResolver = new JavaDescriptorResolver();
this.psiClassFinder = new PsiClassFinderImpl();
this.javaToKotlinClassMap = org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance();
this.javaClassFinder = new JavaClassFinderImpl();
this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
@@ -268,6 +271,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
expressionTypingServices.setCallResolver(callResolver);
expressionTypingServices.setDescriptorResolver(descriptorResolver);
expressionTypingServices.setPlatformToKotlinClassMap(javaToKotlinClassMap);
expressionTypingServices.setProject(project);
expressionTypingServices.setTypeResolver(typeResolver);
@@ -18,6 +18,7 @@ package org.jetbrains.jet.di;
import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.resolve.calls.NeedSyntheticCallResolverExtension;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
import org.jetbrains.jet.lang.resolve.BindingTrace;
@@ -44,6 +45,7 @@ public class InjectorForBodyResolve {
private final BodyResolver bodyResolver;
private final NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final Project project;
private final TopDownAnalysisParameters topDownAnalysisParameters;
private final BindingTrace bindingTrace;
@@ -72,6 +74,7 @@ public class InjectorForBodyResolve {
) {
this.bodyResolver = new BodyResolver();
this.needSyntheticCallResolverExtension = new NeedSyntheticCallResolverExtension();
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.project = project;
this.topDownAnalysisParameters = topDownAnalysisParameters;
this.bindingTrace = bindingTrace;
@@ -117,6 +120,7 @@ public class InjectorForBodyResolve {
expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
expressionTypingServices.setCallResolver(callResolver);
expressionTypingServices.setDescriptorResolver(descriptorResolver);
expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap);
expressionTypingServices.setProject(project);
expressionTypingServices.setTypeResolver(typeResolver);
@@ -27,6 +27,7 @@ import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.psi.JetImportsFactory;
import org.jetbrains.jet.lang.resolve.calls.NeedSyntheticCallResolverExtension;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
@@ -48,6 +49,7 @@ public class InjectorForLazyResolve {
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final JetImportsFactory jetImportsFactory;
private final NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final CallExpressionResolver callExpressionResolver;
private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver;
@@ -69,6 +71,7 @@ public class InjectorForLazyResolve {
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.jetImportsFactory = new JetImportsFactory();
this.needSyntheticCallResolverExtension = new NeedSyntheticCallResolverExtension();
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.callExpressionResolver = new CallExpressionResolver();
this.callResolver = new CallResolver();
this.argumentTypeResolver = new ArgumentTypeResolver();
@@ -81,6 +84,7 @@ public class InjectorForLazyResolve {
this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
this.expressionTypingServices.setCallResolver(callResolver);
this.expressionTypingServices.setDescriptorResolver(descriptorResolver);
this.expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap);
this.expressionTypingServices.setProject(project);
this.expressionTypingServices.setTypeResolver(typeResolver);
@@ -18,6 +18,7 @@ package org.jetbrains.jet.di;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.resolve.calls.NeedSyntheticCallResolverExtension;
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.calls.CallExpressionResolver;
@@ -36,6 +37,7 @@ public class InjectorForMacros {
private final ExpressionTypingServices expressionTypingServices;
private final NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final Project project;
private final ModuleDescriptor moduleDescriptor;
private final CallExpressionResolver callExpressionResolver;
@@ -53,6 +55,7 @@ public class InjectorForMacros {
) {
this.expressionTypingServices = new ExpressionTypingServices();
this.needSyntheticCallResolverExtension = new NeedSyntheticCallResolverExtension();
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.project = project;
this.moduleDescriptor = moduleDescriptor;
this.callExpressionResolver = new CallExpressionResolver();
@@ -67,6 +70,7 @@ public class InjectorForMacros {
this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
this.expressionTypingServices.setCallResolver(callResolver);
this.expressionTypingServices.setDescriptorResolver(descriptorResolver);
this.expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap);
this.expressionTypingServices.setProject(project);
this.expressionTypingServices.setTypeResolver(typeResolver);
@@ -29,6 +29,7 @@ import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
@@ -64,6 +65,7 @@ public class InjectorForTopDownAnalyzerBasic {
private final ModuleDescriptorImpl moduleDescriptor;
private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
private final NamespaceFactoryImpl namespaceFactory;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final DeclarationResolver declarationResolver;
private final AnnotationResolver annotationResolver;
private final CallResolver callResolver;
@@ -85,7 +87,8 @@ public class InjectorForTopDownAnalyzerBasic {
@NotNull Project project,
@NotNull TopDownAnalysisParameters topDownAnalysisParameters,
@NotNull BindingTrace bindingTrace,
@NotNull ModuleDescriptorImpl moduleDescriptor
@NotNull ModuleDescriptorImpl moduleDescriptor,
@NotNull PlatformToKotlinClassMap platformToKotlinClassMap
) {
this.topDownAnalyzer = new TopDownAnalyzer();
this.topDownAnalysisContext = new TopDownAnalysisContext();
@@ -100,6 +103,7 @@ public class InjectorForTopDownAnalyzerBasic {
this.moduleDescriptor = moduleDescriptor;
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
this.namespaceFactory = new NamespaceFactoryImpl();
this.platformToKotlinClassMap = platformToKotlinClassMap;
this.declarationResolver = new DeclarationResolver();
this.annotationResolver = new AnnotationResolver();
this.callResolver = new CallResolver();
@@ -175,6 +179,7 @@ public class InjectorForTopDownAnalyzerBasic {
expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
expressionTypingServices.setCallResolver(callResolver);
expressionTypingServices.setDescriptorResolver(descriptorResolver);
expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap);
expressionTypingServices.setProject(project);
expressionTypingServices.setTypeResolver(typeResolver);
@@ -163,7 +163,7 @@ public class TopDownAnalyzer {
Predicates.<PsiFile>alwaysFalse(), true, false, Collections.<AnalyzerScriptParameter>emptyList());
InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic(
project, topDownAnalysisParameters, new ObservableBindingTrace(trace),
KotlinBuiltIns.getInstance().getBuiltInsModule());
KotlinBuiltIns.getInstance().getBuiltInsModule(), PlatformToKotlinClassMap.EMPTY);
injector.getTopDownAnalyzer().doProcessStandardLibraryNamespace(outerScope, standardLibraryNamespace, files);
}
@@ -196,7 +196,8 @@ public class TopDownAnalyzer {
false, true, Collections.<AnalyzerScriptParameter>emptyList());
InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic(
object.getProject(), topDownAnalysisParameters, new ObservableBindingTrace(context.trace), moduleDescriptor);
object.getProject(), topDownAnalysisParameters, new ObservableBindingTrace(context.trace),
moduleDescriptor, context.expressionTypingServices.getPlatformToKotlinClassMap());
injector.getTopDownAnalysisContext().setOuterDataFlowInfo(context.dataFlowInfo);
@@ -23,6 +23,7 @@ import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.JetNodeTypes;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.FunctionDescriptorUtil;
@@ -75,8 +76,12 @@ import static org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils.*;
@SuppressWarnings("SuspiciousMethodCalls")
public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
protected BasicExpressionTypingVisitor(@NotNull ExpressionTypingInternals facade) {
private final PlatformToKotlinClassMap platformToKotlinClassMap;
protected BasicExpressionTypingVisitor(@NotNull ExpressionTypingInternals facade, @NotNull PlatformToKotlinClassMap platformToKotlinClassMap) {
super(facade);
this.platformToKotlinClassMap = platformToKotlinClassMap;
}
@Override
@@ -21,6 +21,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.ScriptDescriptor;
@@ -54,8 +55,8 @@ import static org.jetbrains.jet.lang.types.expressions.CoercionStrategy.COERCION
public class ExpressionTypingServices {
private final ExpressionTypingFacade expressionTypingFacade = ExpressionTypingVisitorDispatcher.create();
@NotNull
private ExpressionTypingFacade expressionTypingFacade;
@NotNull
private Project project;
@NotNull
@@ -66,8 +67,8 @@ public class ExpressionTypingServices {
private DescriptorResolver descriptorResolver;
@NotNull
private TypeResolver typeResolver;
@NotNull
private PlatformToKotlinClassMap platformToKotlinClassMap;
@NotNull
public Project getProject() {
@@ -119,6 +120,17 @@ public class ExpressionTypingServices {
this.typeResolver = typeResolver;
}
@Inject
public void setPlatformToKotlinClassMap(@NotNull PlatformToKotlinClassMap platformToKotlinClassMap) {
this.platformToKotlinClassMap = platformToKotlinClassMap;
this.expressionTypingFacade = ExpressionTypingVisitorDispatcher.create(platformToKotlinClassMap);
}
@NotNull
public PlatformToKotlinClassMap getPlatformToKotlinClassMap() {
return platformToKotlinClassMap;
}
@NotNull
public JetType safeGetType(@NotNull JetScope scope, @NotNull JetExpression expression, @NotNull JetType expectedType, @NotNull DataFlowInfo dataFlowInfo, @NotNull BindingTrace trace) {
JetType type = getType(scope, expression, expectedType, dataFlowInfo, trace);
@@ -247,7 +259,7 @@ public class ExpressionTypingServices {
return JetTypeInfo.create(KotlinBuiltIns.getInstance().getUnitType(), context.dataFlowInfo);
}
ExpressionTypingInternals blockLevelVisitor = ExpressionTypingVisitorDispatcher.createForBlock(scope);
ExpressionTypingInternals blockLevelVisitor = ExpressionTypingVisitorDispatcher.createForBlock(platformToKotlinClassMap, scope);
ExpressionTypingContext newContext = createContext(context, trace, scope, context.dataFlowInfo, NO_EXPECTED_TYPE);
JetTypeInfo result = JetTypeInfo.create(null, context.dataFlowInfo);
@@ -271,7 +283,7 @@ public class ExpressionTypingServices {
if (newDataFlowInfo != context.dataFlowInfo) {
newContext = newContext.replaceDataFlowInfo(newDataFlowInfo);
}
blockLevelVisitor = ExpressionTypingVisitorDispatcher.createForBlock(scope);
blockLevelVisitor = ExpressionTypingVisitorDispatcher.createForBlock(platformToKotlinClassMap, scope);
}
return result;
}
@@ -18,6 +18,7 @@ package org.jetbrains.jet.lang.types.expressions;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
@@ -38,13 +39,16 @@ public class ExpressionTypingVisitorDispatcher extends JetVisitor<JetTypeInfo, E
}
@NotNull
public static ExpressionTypingFacade create() {
return new ExpressionTypingVisitorDispatcher(null);
public static ExpressionTypingFacade create(@NotNull PlatformToKotlinClassMap platformToKotlinClassMap) {
return new ExpressionTypingVisitorDispatcher(platformToKotlinClassMap, null);
}
@NotNull
public static ExpressionTypingInternals createForBlock(WritableScope writableScope) {
return new ExpressionTypingVisitorDispatcher(writableScope);
public static ExpressionTypingInternals createForBlock(
@NotNull PlatformToKotlinClassMap platformToKotlinClassMap,
@NotNull WritableScope writableScope
) {
return new ExpressionTypingVisitorDispatcher(platformToKotlinClassMap, writableScope);
}
private final BasicExpressionTypingVisitor basic;
@@ -53,8 +57,8 @@ public class ExpressionTypingVisitorDispatcher extends JetVisitor<JetTypeInfo, E
private final ControlStructureTypingVisitor controlStructures = new ControlStructureTypingVisitor(this);
private final PatternMatchingTypingVisitor patterns = new PatternMatchingTypingVisitor(this);
private ExpressionTypingVisitorDispatcher(WritableScope writableScope) {
this.basic = new BasicExpressionTypingVisitor(this);
private ExpressionTypingVisitorDispatcher(PlatformToKotlinClassMap platformToKotlinClassMap, WritableScope writableScope) {
this.basic = new BasicExpressionTypingVisitor(this, platformToKotlinClassMap);
if (writableScope != null) {
this.statements = new ExpressionTypingVisitorForStatements(this, writableScope, basic, controlStructures, patterns);
}
@@ -22,6 +22,7 @@ import org.jetbrains.jet.lang.resolve.TypeResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.NeedSyntheticCallResolverExtension;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
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;
@@ -41,6 +42,7 @@ public class InjectorForTests {
private final CallResolver callResolver;
private final NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final KotlinBuiltIns kotlinBuiltIns;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final Project project;
private final ModuleDescriptor moduleDescriptor;
private final AnnotationResolver annotationResolver;
@@ -59,6 +61,7 @@ public class InjectorForTests {
this.callResolver = new CallResolver();
this.needSyntheticCallResolverExtension = new NeedSyntheticCallResolverExtension();
this.kotlinBuiltIns = KotlinBuiltIns.getInstance();
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.project = project;
this.moduleDescriptor = moduleDescriptor;
this.annotationResolver = new AnnotationResolver();
@@ -74,6 +77,7 @@ public class InjectorForTests {
this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
this.expressionTypingServices.setCallResolver(callResolver);
this.expressionTypingServices.setDescriptorResolver(descriptorResolver);
this.expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap);
this.expressionTypingServices.setProject(project);
this.expressionTypingServices.setTypeResolver(typeResolver);
@@ -27,6 +27,7 @@ import org.jetbrains.jet.codegen.state.JetTypeMapper;
import org.jetbrains.jet.di.DependencyInjectorGenerator;
import org.jetbrains.jet.di.GivenExpression;
import org.jetbrains.jet.di.InjectorForTopDownAnalyzer;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.psi.JetImportsFactory;
@@ -37,6 +38,7 @@ import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.java.resolver.*;
import org.jetbrains.jet.lang.resolve.java.vfilefinder.VirtualFileFinder;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
@@ -79,6 +81,7 @@ public class GenerateInjectors {
generator.addPublicField(QualifiedExpressionResolver.class);
generator.addPublicField(JetImportsFactory.class);
generator.addField(NeedSyntheticCallResolverExtension.class);
generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"));
generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForLazyResolve", GenerateInjectors.class);
}
@@ -87,6 +90,7 @@ public class GenerateInjectors {
generateInjectorForTopDownAnalyzerCommon(generator);
generator.addField(DependencyClassByQualifiedNameResolverDummyImpl.class);
generator.addField(NamespaceFactoryImpl.class);
generator.addParameter(PlatformToKotlinClassMap.class);
generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic", GenerateInjectors.class);
}
@@ -95,6 +99,7 @@ public class GenerateInjectors {
generateInjectorForTopDownAnalyzerCommon(generator);
generator.addField(DependencyClassByQualifiedNameResolverDummyImpl.class);
generator.addField(NamespaceFactoryImpl.class);
generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("org.jetbrains.jet.lang.PlatformToKotlinClassMap.EMPTY"));
generator.generate("js/js.translator/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs", GenerateInjectors.class);
}
@@ -105,6 +110,7 @@ public class GenerateInjectors {
generator.addPublicField(JavaBridgeConfiguration.class);
generator.addField(JavaDescriptorResolver.class);
generator.addField(PsiClassFinderImpl.class);
generator.addField(false, JavaToKotlinClassMap.class, null, new GivenExpression("org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance()"));
generator.addField(JavaClassFinderImpl.class);
generator.addField(TraceBasedExternalSignatureResolver.class);
generator.addField(TraceBasedJavaResolverCache.class);
@@ -167,6 +173,7 @@ public class GenerateInjectors {
// Fields
generator.addPublicField(ExpressionTypingServices.class);
generator.addField(NeedSyntheticCallResolverExtension.class);
generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"));
// Parameters
generator.addPublicParameter(Project.class);
@@ -185,6 +192,7 @@ public class GenerateInjectors {
generator.addPublicField(CallResolver.class);
generator.addField(NeedSyntheticCallResolverExtension.class);
generator.addField(true, KotlinBuiltIns.class, null, new GivenExpression("KotlinBuiltIns.getInstance()"));
generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"));
// Parameters
generator.addPublicParameter(Project.class);
@@ -221,6 +229,7 @@ public class GenerateInjectors {
// Fields
generator.addPublicField(BodyResolver.class);
generator.addField(NeedSyntheticCallResolverExtension.class);
generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"));
// Parameters
generator.addPublicParameter(Project.class);
@@ -29,6 +29,7 @@ import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
@@ -64,6 +65,7 @@ public class InjectorForTopDownAnalyzerForJs {
private final ModuleDescriptorImpl moduleDescriptor;
private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
private final NamespaceFactoryImpl namespaceFactory;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final DeclarationResolver declarationResolver;
private final AnnotationResolver annotationResolver;
private final CallResolver callResolver;
@@ -100,6 +102,7 @@ public class InjectorForTopDownAnalyzerForJs {
this.moduleDescriptor = moduleDescriptor;
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
this.namespaceFactory = new NamespaceFactoryImpl();
this.platformToKotlinClassMap = org.jetbrains.jet.lang.PlatformToKotlinClassMap.EMPTY;
this.declarationResolver = new DeclarationResolver();
this.annotationResolver = new AnnotationResolver();
this.callResolver = new CallResolver();
@@ -175,6 +178,7 @@ public class InjectorForTopDownAnalyzerForJs {
expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
expressionTypingServices.setCallResolver(callResolver);
expressionTypingServices.setDescriptorResolver(descriptorResolver);
expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap);
expressionTypingServices.setProject(project);
expressionTypingServices.setTypeResolver(typeResolver);