From bffbe1dd389ad672a839f0c55b229c44d63c621a Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 19 Sep 2012 20:08:48 +0400 Subject: [PATCH] KT-2710 Extend root JS package with standard scope #KT-2710 In Progress --- .../k2js/analyze/AnalyzerFacadeForJS.java | 35 +------------------ .../k2js/analyze/JsConfiguration.java | 10 +++++- 2 files changed, 10 insertions(+), 35 deletions(-) diff --git a/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java b/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java index b99a43e0506..8116f783dbf 100644 --- a/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java +++ b/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java @@ -26,19 +26,13 @@ import org.jetbrains.jet.analyzer.AnalyzeExhaust; import org.jetbrains.jet.analyzer.AnalyzerFacadeForEverything; import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJs; import org.jetbrains.jet.lang.ModuleConfiguration; -import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; -import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.psi.JetImportDirective; -import org.jetbrains.jet.lang.psi.JetPsiFactory; import org.jetbrains.jet.lang.resolve.*; import org.jetbrains.jet.lang.resolve.lazy.FileBasedDeclarationProviderFactory; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; -import org.jetbrains.jet.lang.resolve.scopes.WritableScope; -import org.jetbrains.jet.lang.types.lang.JetStandardLibrary; import org.jetbrains.k2js.config.Config; import java.util.Collection; @@ -150,34 +144,7 @@ public final class AnalyzerFacadeForJS { public static ResolveSession getLazyResolveSession(Collection files, final Config config) { FileBasedDeclarationProviderFactory declarationProviderFactory = new FileBasedDeclarationProviderFactory( Config.withJsLibAdded(files, config), Predicates.alwaysFalse()); - - // ModuleConfiguration moduleConfiguration = new JsConfiguration(config.getProject(), null); - - ModuleConfiguration moduleConfigurationJs = new ModuleConfiguration() { - @Override - public void addDefaultImports(@NotNull Collection directives) { - for (ImportPath path : JsConfiguration.DEFAULT_IMPORT_PATHS) { - directives.add(JetPsiFactory.createImportDirective(config.getProject(), path)); - } - } - - @Override - public void extendNamespaceScope( - @NotNull BindingTrace trace, - @NotNull NamespaceDescriptor namespaceDescriptor, - @NotNull WritableScope namespaceMemberScope - ) { - namespaceMemberScope.importScope(JetStandardLibrary.getInstance().getLibraryScope()); - } - - @NotNull - @Override - public PlatformToKotlinClassMap getPlatformToKotlinClassMap() { - return PlatformToKotlinClassMap.EMPTY; - } - }; - ModuleDescriptor lazyModule = new ModuleDescriptor(Name.special("")); - return new ResolveSession(config.getProject(), lazyModule, moduleConfigurationJs, declarationProviderFactory); + return new ResolveSession(config.getProject(), lazyModule, new JsConfiguration(config.getProject(), null), declarationProviderFactory); } } diff --git a/js/js.translator/src/org/jetbrains/k2js/analyze/JsConfiguration.java b/js/js.translator/src/org/jetbrains/k2js/analyze/JsConfiguration.java index 792b542e7f3..60f352f696a 100644 --- a/js/js.translator/src/org/jetbrains/k2js/analyze/JsConfiguration.java +++ b/js/js.translator/src/org/jetbrains/k2js/analyze/JsConfiguration.java @@ -31,8 +31,10 @@ import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.ImportPath; import org.jetbrains.jet.lang.resolve.name.FqName; +import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe; import org.jetbrains.jet.lang.resolve.scopes.WritableScope; import org.jetbrains.jet.lang.types.lang.JetStandardClasses; +import org.jetbrains.jet.lang.types.lang.JetStandardLibrary; import java.util.Arrays; import java.util.Collection; @@ -43,7 +45,7 @@ import static org.jetbrains.jet.lang.resolve.DescriptorUtils.isRootNamespace; /** * @author Pavel Talanov */ -public final class JsConfiguration implements ModuleConfiguration { +public class JsConfiguration implements ModuleConfiguration { @NotNull private static final List DEFAULT_IMPORT_PATHS = Arrays.asList(new ImportPath("js.*"), new ImportPath("java.lang.*"), @@ -75,6 +77,12 @@ public final class JsConfiguration implements ModuleConfiguration { @NotNull WritableScope namespaceMemberScope) { DefaultModuleConfiguration.createStandardConfiguration(project, BuiltinsScopeExtensionMode.ALL) .extendNamespaceScope(trace, namespaceDescriptor, namespaceMemberScope); + + // Extend root namespace with standard classes + if (namespaceDescriptor.getQualifiedName().shortNameOrSpecial().equals(FqNameUnsafe.ROOT_NAME)) { + namespaceMemberScope.importScope(JetStandardLibrary.getInstance().getLibraryScope()); + } + if (hasPreanalyzedContextForTests()) { extendScopeWithPreAnalyzedContextForTests(namespaceDescriptor, namespaceMemberScope); }