Allow to use dynamic types for JS projects in IDEA.
This commit is contained in:
@@ -32,6 +32,7 @@ import org.jetbrains.jet.lang.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.jet.analyzer.ModuleInfo
|
||||
import org.jetbrains.jet.analyzer.ModuleContent
|
||||
import org.jetbrains.k2js.resolve.KotlinJsDeclarationCheckerProvider
|
||||
import org.jetbrains.jet.lang.types.DynamicTypesAllowed
|
||||
|
||||
public class JsResolverForModule(
|
||||
override val lazyResolveSession: ResolveSession
|
||||
@@ -53,7 +54,8 @@ public object JsAnalyzerFacade : AnalyzerFacade<JsResolverForModule, PlatformAna
|
||||
project, globalContext.storageManager, syntheticFiles, moduleContentScope
|
||||
)
|
||||
|
||||
val injector = InjectorForLazyResolve(project, globalContext, moduleDescriptor, declarationProviderFactory, BindingTraceContext(), KotlinJsDeclarationCheckerProvider)
|
||||
val injector = InjectorForLazyResolve(project, globalContext, moduleDescriptor, declarationProviderFactory, BindingTraceContext(),
|
||||
KotlinJsDeclarationCheckerProvider, DynamicTypesAllowed())
|
||||
val resolveSession = injector.getResolveSession()!!
|
||||
moduleDescriptor.initialize(resolveSession.getPackageFragmentProvider())
|
||||
return JsResolverForModule(resolveSession)
|
||||
|
||||
+3
-1
@@ -239,12 +239,14 @@ private object KotlinResolveDataProvider {
|
||||
|
||||
val trace = DelegatingBindingTrace(resolveSession.getBindingContext(), "Trace for resolution of " + analyzableElement)
|
||||
|
||||
val targetPlatform = TargetPlatformDetector.getPlatform(analyzableElement.getContainingJetFile())
|
||||
val lazyTopDownAnalyzer = InjectorForLazyBodyResolve(
|
||||
project,
|
||||
SimpleGlobalContext(resolveSession.getStorageManager(), resolveSession.getExceptionTracker()),
|
||||
resolveSession,
|
||||
trace,
|
||||
TargetPlatformDetector.getPlatform(analyzableElement.getContainingJetFile()).getAdditionalCheckerProvider()
|
||||
targetPlatform.getAdditionalCheckerProvider(),
|
||||
targetPlatform.getDynamicTypesSettings()
|
||||
).getLazyTopDownAnalyzer()!!
|
||||
|
||||
lazyTopDownAnalyzer.analyzeDeclarations(
|
||||
|
||||
+4
-2
@@ -49,8 +49,8 @@ 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;
|
||||
import org.jetbrains.jet.lang.resolve.java.JvmClassName;
|
||||
import org.jetbrains.jet.lang.resolve.java.TopDownAnalyzerFacadeForJVM;
|
||||
import org.jetbrains.jet.lang.resolve.java.mapping.KotlinToJavaTypesMap;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.KotlinCodeAnalyzer;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||
@@ -58,6 +58,7 @@ import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProv
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.DynamicTypesSettings;
|
||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||
import org.jetbrains.jet.lexer.JetTokens;
|
||||
import org.jetbrains.jet.plugin.stubindex.JetFullClassNameIndex;
|
||||
@@ -259,7 +260,8 @@ public class JetSourceNavigationHelper {
|
||||
moduleDescriptor,
|
||||
providerFactory,
|
||||
new BindingTraceContext(),
|
||||
AdditionalCheckerProvider.Empty.INSTANCE$).getResolveSession();
|
||||
AdditionalCheckerProvider.Empty.INSTANCE$,
|
||||
new DynamicTypesSettings()).getResolveSession();
|
||||
|
||||
moduleDescriptor.initialize(resolveSession.getPackageFragmentProvider());
|
||||
return resolveSession;
|
||||
|
||||
@@ -19,12 +19,17 @@ package org.jetbrains.jet.plugin.project;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.resolve.AdditionalCheckerProvider;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.JavaDeclarationCheckerProvider;
|
||||
import org.jetbrains.jet.lang.types.DynamicTypesAllowed;
|
||||
import org.jetbrains.jet.lang.types.DynamicTypesSettings;
|
||||
import org.jetbrains.k2js.resolve.KotlinJsDeclarationCheckerProvider;
|
||||
|
||||
public interface TargetPlatform {
|
||||
@NotNull
|
||||
AdditionalCheckerProvider getAdditionalCheckerProvider();
|
||||
|
||||
TargetPlatform JVM = new TargetPlatformImpl("JVM", JavaDeclarationCheckerProvider.INSTANCE$);
|
||||
TargetPlatform JS = new TargetPlatformImpl("JS", KotlinJsDeclarationCheckerProvider.INSTANCE$);
|
||||
@NotNull
|
||||
DynamicTypesSettings getDynamicTypesSettings();
|
||||
|
||||
TargetPlatform JVM = new TargetPlatformImpl("JVM", JavaDeclarationCheckerProvider.INSTANCE$, new DynamicTypesSettings());
|
||||
TargetPlatform JS = new TargetPlatformImpl("JS", KotlinJsDeclarationCheckerProvider.INSTANCE$, new DynamicTypesAllowed());
|
||||
}
|
||||
|
||||
@@ -18,18 +18,21 @@ package org.jetbrains.jet.plugin.project;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.resolve.AdditionalCheckerProvider;
|
||||
import org.jetbrains.jet.lang.types.DynamicTypesSettings;
|
||||
|
||||
public class TargetPlatformImpl implements TargetPlatform {
|
||||
@NotNull private final String platformName;
|
||||
@NotNull private final AdditionalCheckerProvider additionalCheckerProvider;
|
||||
@NotNull private final DynamicTypesSettings dynamicTypesSettings;
|
||||
|
||||
public TargetPlatformImpl(@NotNull String platformName) {
|
||||
this(platformName, AdditionalCheckerProvider.Empty.INSTANCE$);
|
||||
}
|
||||
|
||||
public TargetPlatformImpl(@NotNull String platformName, @NotNull AdditionalCheckerProvider additionalCheckerProvider) {
|
||||
this.additionalCheckerProvider = additionalCheckerProvider;
|
||||
public TargetPlatformImpl(
|
||||
@NotNull String platformName,
|
||||
@NotNull AdditionalCheckerProvider additionalCheckerProvider,
|
||||
@NotNull DynamicTypesSettings dynamicTypesSettings
|
||||
) {
|
||||
this.platformName = platformName;
|
||||
this.additionalCheckerProvider = additionalCheckerProvider;
|
||||
this.dynamicTypesSettings = dynamicTypesSettings;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -38,6 +41,12 @@ public class TargetPlatformImpl implements TargetPlatform {
|
||||
return additionalCheckerProvider;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public DynamicTypesSettings getDynamicTypesSettings() {
|
||||
return dynamicTypesSettings;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return platformName;
|
||||
|
||||
Reference in New Issue
Block a user