KT-2710 Extend root JS package with standard scope
#KT-2710 In Progress
This commit is contained in:
@@ -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<JetFile> files, final Config config) {
|
||||
FileBasedDeclarationProviderFactory declarationProviderFactory = new FileBasedDeclarationProviderFactory(
|
||||
Config.withJsLibAdded(files, config), Predicates.<FqName>alwaysFalse());
|
||||
|
||||
// ModuleConfiguration moduleConfiguration = new JsConfiguration(config.getProject(), null);
|
||||
|
||||
ModuleConfiguration moduleConfigurationJs = new ModuleConfiguration() {
|
||||
@Override
|
||||
public void addDefaultImports(@NotNull Collection<JetImportDirective> 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("<lazy module>"));
|
||||
return new ResolveSession(config.getProject(), lazyModule, moduleConfigurationJs, declarationProviderFactory);
|
||||
return new ResolveSession(config.getProject(), lazyModule, new JsConfiguration(config.getProject(), null), declarationProviderFactory);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<ImportPath> 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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user