Added platform static checker with provider implementation

This commit is contained in:
Michael Bogdanov
2014-09-15 14:38:29 +04:00
parent 9b065a89b9
commit b763aa9995
36 changed files with 443 additions and 52 deletions
@@ -33,6 +33,7 @@ import org.jetbrains.jet.di.InjectorForLazyResolve
import org.jetbrains.jet.lang.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.jet.analyzer.ModuleInfo
import org.jetbrains.jet.analyzer.ModuleContent
import org.jetbrains.jet.lang.resolve.AdditionalCheckerProvider
public class JsResolverForModule(
override val lazyResolveSession: ResolveSession
@@ -54,7 +55,7 @@ public object JsAnalyzerFacade : AnalyzerFacade<JsResolverForModule, PlatformAna
project, globalContext.storageManager, syntheticFiles, moduleContentScope
)
val injector = InjectorForLazyResolve(project, globalContext, moduleDescriptor, declarationProviderFactory, BindingTraceContext())
val injector = InjectorForLazyResolve(project, globalContext, moduleDescriptor, declarationProviderFactory, BindingTraceContext(), AdditionalCheckerProvider.Empty)
val resolveSession = injector.getResolveSession()!!
moduleDescriptor.initialize(resolveSession.getPackageFragmentProvider())
return JsResolverForModule(resolveSession)
@@ -46,6 +46,7 @@ import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.AdditionalCheckerProvider;
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.java.TopDownAnalyzerFacadeForJVM;
@@ -257,7 +258,8 @@ public class JetSourceNavigationHelper {
globalContext,
moduleDescriptor,
providerFactory,
new BindingTraceContext()).getResolveSession();
new BindingTraceContext(),
AdditionalCheckerProvider.Empty.INSTANCE$).getResolveSession();
moduleDescriptor.initialize(resolveSession.getPackageFragmentProvider());
return resolveSession;
@@ -25,7 +25,10 @@ import kotlin.Function1;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.JetElement;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.AdditionalCheckerProvider;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.kotlin.JavaDeclarationCheckerProvider;
import org.jetbrains.jet.lang.resolve.lazy.ElementResolver;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
import org.jetbrains.jet.storage.LazyResolveStorageManager;
@@ -66,4 +69,14 @@ public class ResolveElementCache extends ElementResolver {
public BindingContext getElementAdditionalResolve(@NotNull JetElement jetElement) {
return additionalResolveCache.getValue().invoke(jetElement);
}
@NotNull
@Override
public AdditionalCheckerProvider getAdditionalCheckerProvider(@NotNull JetFile jetFile) {
TargetPlatform platform = TargetPlatformDetector.getPlatform(jetFile);
if (platform == TargetPlatform.JS) {
return AdditionalCheckerProvider.Empty.INSTANCE$;
}
return JavaDeclarationCheckerProvider.INSTANCE$;
}
}
@@ -107,7 +107,7 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent {
module.seal();
BindingTraceContext trace = new BindingTraceContext();
InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic(
myProject, topDownAnalysisParameters, trace, module);
myProject, topDownAnalysisParameters, trace, module, AdditionalCheckerProvider.Empty.INSTANCE$);
TopDownAnalyzer analyzer = injector.getTopDownAnalyzer();
analyzer.analyzeFiles(topDownAnalysisParameters, jetBuiltInsFiles);