Restore hack for avoiding tracking declarations from JS stdlib
This commit is contained in:
@@ -36,6 +36,19 @@ object TopDownAnalyzerFacadeForJS {
|
||||
files: Collection<KtFile>,
|
||||
config: JsConfig
|
||||
): JsAnalysisResult {
|
||||
val configuration = config.configuration
|
||||
|
||||
// The hack to avoid adding lookups for builtins:
|
||||
// save current lookup tracker and temporarily provide dummy version instead.
|
||||
val lookupTracker = configuration.get(CommonConfigurationKeys.LOOKUP_TRACKER)
|
||||
configuration.put(CommonConfigurationKeys.LOOKUP_TRACKER, LookupTracker.DO_NOTHING)
|
||||
|
||||
config.init()
|
||||
|
||||
// The second part of hack to avoid adding lookups for builtins:
|
||||
// restore previous lookup tracker.
|
||||
lookupTracker?.let { configuration.put(CommonConfigurationKeys.LOOKUP_TRACKER, it) }
|
||||
|
||||
return analyzeFiles(files, config.project, config.configuration, config.moduleDescriptors, config.friendModuleDescriptors)
|
||||
}
|
||||
|
||||
@@ -50,17 +63,12 @@ object TopDownAnalyzerFacadeForJS {
|
||||
val moduleName = configuration[CommonConfigurationKeys.MODULE_NAME]!!
|
||||
val context = ContextForNewModule(ProjectContext(project), Name.special("<$moduleName>"), JsPlatform.builtIns, null)
|
||||
|
||||
// a hack to avoid adding lookups for builtins
|
||||
val lookupTracker = configuration.get(CommonConfigurationKeys.LOOKUP_TRACKER)
|
||||
configuration.put(CommonConfigurationKeys.LOOKUP_TRACKER, LookupTracker.DO_NOTHING)
|
||||
|
||||
context.module.setDependencies(
|
||||
listOf(context.module) +
|
||||
moduleDescriptors.map { it.data } +
|
||||
listOf(JsPlatform.builtIns.builtInsModule),
|
||||
friendModuleDescriptors.map { it.data }.toSet()
|
||||
)
|
||||
lookupTracker?.let { configuration.put(CommonConfigurationKeys.LOOKUP_TRACKER, it) }
|
||||
|
||||
val moduleKind = configuration.get(JSConfigurationKeys.MODULE_KIND, ModuleKind.PLAIN)
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.js.config;
|
||||
|
||||
import com.google.gwt.dev.js.ThrowExceptionOnErrorReporter;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.StandardFileSystems;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
@@ -229,9 +228,12 @@ public class JsConfig {
|
||||
@NotNull
|
||||
public List<JsModuleDescriptor<ModuleDescriptorImpl>> getModuleDescriptors() {
|
||||
init();
|
||||
if (moduleDescriptors != null) return moduleDescriptors;
|
||||
return moduleDescriptors;
|
||||
}
|
||||
|
||||
moduleDescriptors = new SmartList<>();
|
||||
@NotNull
|
||||
private List<JsModuleDescriptor<ModuleDescriptorImpl>> createModuleDescriptors() {
|
||||
List<JsModuleDescriptor<ModuleDescriptorImpl>> moduleDescriptors = new SmartList<>();
|
||||
List<ModuleDescriptorImpl> kotlinModuleDescriptors = new ArrayList<>();
|
||||
for (KotlinJavascriptMetadata metadataEntry : metadata) {
|
||||
JsModuleDescriptor<ModuleDescriptorImpl> descriptor = createModuleDescriptor(metadataEntry);
|
||||
@@ -274,9 +276,12 @@ public class JsConfig {
|
||||
@NotNull
|
||||
public List<JsModuleDescriptor<ModuleDescriptorImpl>> getFriendModuleDescriptors() {
|
||||
init();
|
||||
if (friendModuleDescriptors != null) return friendModuleDescriptors;
|
||||
return friendModuleDescriptors;
|
||||
}
|
||||
|
||||
friendModuleDescriptors = new SmartList<>();
|
||||
@NotNull
|
||||
private List<JsModuleDescriptor<ModuleDescriptorImpl>> createFriendModuleDescriptors() {
|
||||
List<JsModuleDescriptor<ModuleDescriptorImpl>> friendModuleDescriptors = new SmartList<>();
|
||||
for (KotlinJavascriptMetadata metadataEntry : friends) {
|
||||
JsModuleDescriptor<ModuleDescriptorImpl> descriptor = createModuleDescriptor(metadataEntry);
|
||||
friendModuleDescriptors.add(descriptor);
|
||||
@@ -287,7 +292,7 @@ public class JsConfig {
|
||||
return friendModuleDescriptors;
|
||||
}
|
||||
|
||||
private void init() {
|
||||
public void init() {
|
||||
if (!initialized) {
|
||||
JsConfig.Reporter reporter = new Reporter() {
|
||||
@Override
|
||||
@@ -298,6 +303,14 @@ public class JsConfig {
|
||||
|
||||
checkLibFilesAndReportErrors(reporter);
|
||||
}
|
||||
|
||||
if (moduleDescriptors == null) {
|
||||
moduleDescriptors = createModuleDescriptors();
|
||||
}
|
||||
|
||||
if (friendModuleDescriptors == null) {
|
||||
friendModuleDescriptors = createFriendModuleDescriptors();
|
||||
}
|
||||
}
|
||||
|
||||
private final IdentityHashMap<KotlinJavascriptMetadata, JsModuleDescriptor<ModuleDescriptorImpl>> factoryMap = new IdentityHashMap<>();
|
||||
|
||||
Reference in New Issue
Block a user