ModuleDescriptor stores default imports

This commit is contained in:
Andrey Breslav
2013-04-17 11:04:44 +04:00
parent d5a4a67a86
commit f3656bcadd
22 changed files with 53 additions and 50 deletions
@@ -41,14 +41,14 @@ import org.jetbrains.jet.codegen.state.GenerationState;
import org.jetbrains.jet.config.CompilerConfiguration; import org.jetbrains.jet.config.CompilerConfiguration;
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm; import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl; import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.descriptors.ScriptDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorImpl; import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorImpl;
import org.jetbrains.jet.lang.descriptors.impl.NamespaceLikeBuilderDummy; import org.jetbrains.jet.lang.descriptors.impl.NamespaceLikeBuilderDummy;
import org.jetbrains.jet.lang.descriptors.ScriptDescriptor;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.*; import org.jetbrains.jet.lang.resolve.*;
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
import org.jetbrains.jet.lang.resolve.java.JvmClassName; import org.jetbrains.jet.lang.resolve.java.JvmClassName;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.resolve.scopes.WritableScope; import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
import org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl; import org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl;
@@ -88,14 +88,14 @@ public class ReplInterpreter {
jetCoreEnvironment = new JetCoreEnvironment(disposable, configuration); jetCoreEnvironment = new JetCoreEnvironment(disposable, configuration);
Project project = jetCoreEnvironment.getProject(); Project project = jetCoreEnvironment.getProject();
trace = new BindingTraceContext(); trace = new BindingTraceContext();
module = new ModuleDescriptorImpl(Name.special("<repl>")); module = AnalyzerFacadeForJVM.createJavaModule("<repl>");
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters( TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
Predicates.<PsiFile>alwaysTrue(), Predicates.<PsiFile>alwaysTrue(),
false, false,
true, true,
Collections.<AnalyzerScriptParameter>emptyList()); Collections.<AnalyzerScriptParameter>emptyList());
injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module); injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module);
module.setModuleConfiguration(injector.getModuleDescriptor().getModuleConfiguration()); module.setModuleConfiguration(injector.getJavaBridgeConfiguration());
List<URL> classpath = Lists.newArrayList(); List<URL> classpath = Lists.newArrayList();
@@ -161,8 +161,6 @@ public class InjectorForJavaDescriptorResolver {
javaPropertyResolver.setSemanticServices(javaSemanticServices); javaPropertyResolver.setSemanticServices(javaSemanticServices);
javaPropertyResolver.setTrace(bindingTrace); javaPropertyResolver.setTrace(bindingTrace);
javaBridgeConfiguration.init();
psiClassFinder.initialize(); psiClassFinder.initialize();
} }
@@ -73,7 +73,7 @@ public class InjectorForJavaSemanticServices {
this.bindingTrace = new org.jetbrains.jet.lang.resolve.BindingTraceContext(); this.bindingTrace = new org.jetbrains.jet.lang.resolve.BindingTraceContext();
this.javaBridgeConfiguration = new JavaBridgeConfiguration(); this.javaBridgeConfiguration = new JavaBridgeConfiguration();
this.psiClassFinder = new PsiClassFinderImpl(); this.psiClassFinder = new PsiClassFinderImpl();
this.moduleDescriptor = new org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl(org.jetbrains.jet.lang.resolve.name.Name.special("<dummy>")); this.moduleDescriptor = new org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl(org.jetbrains.jet.lang.resolve.name.Name.special("<dummy>"), JavaBridgeConfiguration.ALL_JAVA_IMPORTS);
this.project = project; this.project = project;
this.psiDeclarationProviderFactory = new PsiDeclarationProviderFactory(getPsiClassFinder()); this.psiDeclarationProviderFactory = new PsiDeclarationProviderFactory(getPsiClassFinder());
this.javaTypeTransformer = new JavaTypeTransformer(); this.javaTypeTransformer = new JavaTypeTransformer();
@@ -161,8 +161,6 @@ public class InjectorForJavaSemanticServices {
javaPropertyResolver.setSemanticServices(javaSemanticServices); javaPropertyResolver.setSemanticServices(javaSemanticServices);
javaPropertyResolver.setTrace(bindingTrace); javaPropertyResolver.setTrace(bindingTrace);
javaBridgeConfiguration.init();
psiClassFinder.initialize(); psiClassFinder.initialize();
} }
@@ -334,8 +334,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
javaPropertyResolver.setSemanticServices(javaSemanticServices); javaPropertyResolver.setSemanticServices(javaSemanticServices);
javaPropertyResolver.setTrace(bindingTrace); javaPropertyResolver.setTrace(bindingTrace);
javaBridgeConfiguration.init();
psiClassFinder.initialize(); psiClassFinder.initialize();
} }
@@ -18,8 +18,6 @@ package org.jetbrains.jet.lang.resolve.java;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import com.google.common.base.Predicates; import com.google.common.base.Predicates;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -28,7 +26,6 @@ import org.jetbrains.jet.analyzer.AnalyzerFacade;
import org.jetbrains.jet.analyzer.AnalyzerFacadeForEverything; import org.jetbrains.jet.analyzer.AnalyzerFacadeForEverything;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver; import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm; import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
import org.jetbrains.jet.lang.DefaultModuleConfiguration;
import org.jetbrains.jet.lang.ModuleConfiguration; import org.jetbrains.jet.lang.ModuleConfiguration;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
@@ -47,7 +44,6 @@ import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
public enum AnalyzerFacadeForJVM implements AnalyzerFacade { public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
@@ -83,7 +79,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
@NotNull @NotNull
@Override @Override
public ResolveSession getLazyResolveSession(@NotNull Project fileProject, @NotNull Collection<JetFile> files) { public ResolveSession getLazyResolveSession(@NotNull Project fileProject, @NotNull Collection<JetFile> files) {
ModuleDescriptorImpl javaModule = new ModuleDescriptorImpl(Name.special("<java module>")); ModuleDescriptorImpl javaModule = createJavaModule("<java module>");
BindingTraceContext javaResolverTrace = new BindingTraceContext(); BindingTraceContext javaResolverTrace = new BindingTraceContext();
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(fileProject, javaResolverTrace, javaModule); InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(fileProject, javaResolverTrace, javaModule);
@@ -104,9 +100,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
ModuleConfiguration moduleConfiguration = new ModuleConfiguration() { ModuleConfiguration moduleConfiguration = new ModuleConfiguration() {
@Override @Override
public List<ImportPath> getDefaultImports() { public List<ImportPath> getDefaultImports() {
LinkedHashSet<ImportPath> imports = Sets.newLinkedHashSet(JavaBridgeConfiguration.DEFAULT_JAVA_IMPORTS); return JavaBridgeConfiguration.ALL_JAVA_IMPORTS;
imports.addAll(DefaultModuleConfiguration.DEFAULT_JET_IMPORTS);
return Lists.newArrayList(imports);
} }
@Override @Override
@@ -134,7 +128,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
}; };
javaModule.setModuleConfiguration(moduleConfiguration); javaModule.setModuleConfiguration(moduleConfiguration);
ModuleDescriptorImpl lazyModule = new ModuleDescriptorImpl(Name.special("<lazy module>")); ModuleDescriptorImpl lazyModule = createJavaModule("<lazy module>");
lazyModule.setModuleConfiguration(moduleConfiguration); lazyModule.setModuleConfiguration(moduleConfiguration);
return new ResolveSession(fileProject, storageManager, lazyModule, declarationProviderFactory, javaResolverTrace); return new ResolveSession(fileProject, storageManager, lazyModule, declarationProviderFactory, javaResolverTrace);
@@ -202,7 +196,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
Predicate<PsiFile> filesToAnalyzeCompletely, Predicate<PsiFile> filesToAnalyzeCompletely,
boolean storeContextForBodiesResolve boolean storeContextForBodiesResolve
) { ) {
ModuleDescriptorImpl owner = new ModuleDescriptorImpl(Name.special("<module>")); ModuleDescriptorImpl owner = createJavaModule("<module>");
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters( TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
filesToAnalyzeCompletely, false, false, scriptParameters); filesToAnalyzeCompletely, false, false, scriptParameters);
@@ -230,4 +224,9 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
return analyzeFilesWithJavaIntegration(project, return analyzeFilesWithJavaIntegration(project,
files, Collections.<AnalyzerScriptParameter>emptyList(), Predicates.<PsiFile>alwaysFalse()); files, Collections.<AnalyzerScriptParameter>emptyList(), Predicates.<PsiFile>alwaysFalse());
} }
@NotNull
public static ModuleDescriptorImpl createJavaModule(@NotNull String name) {
return new ModuleDescriptorImpl(Name.special(name), JavaBridgeConfiguration.ALL_JAVA_IMPORTS);
}
} }
@@ -51,7 +51,8 @@ import java.util.Set;
public final class JavaNamespaceResolver { public final class JavaNamespaceResolver {
@NotNull @NotNull
public static final ModuleDescriptor FAKE_ROOT_MODULE = new ModuleDescriptorImpl(JavaDescriptorResolver.JAVA_ROOT); public static final ModuleDescriptor FAKE_ROOT_MODULE = new ModuleDescriptorImpl(JavaDescriptorResolver.JAVA_ROOT,
JavaBridgeConfiguration.ALL_JAVA_IMPORTS);
@NotNull @NotNull
private final Map<FqName, JavaBaseScope> resolvedNamespaceCache = Maps.newHashMap(); private final Map<FqName, JavaBaseScope> resolvedNamespaceCache = Maps.newHashMap();
@NotNull @NotNull
@@ -34,12 +34,14 @@ import java.util.List;
public class ModuleDescriptorImpl extends DeclarationDescriptorImpl implements ClassOrNamespaceDescriptor, ModuleDescriptor { public class ModuleDescriptorImpl extends DeclarationDescriptorImpl implements ClassOrNamespaceDescriptor, ModuleDescriptor {
private NamespaceDescriptor rootNamepsace; private NamespaceDescriptor rootNamepsace;
private ModuleConfiguration moduleConfiguration; private ModuleConfiguration moduleConfiguration;
private final List<ImportPath> defaultImports;
public ModuleDescriptorImpl(@NotNull Name name) { public ModuleDescriptorImpl(@NotNull Name name, @NotNull List<ImportPath> defaultImports) {
super(Collections.<AnnotationDescriptor>emptyList(), name); super(Collections.<AnnotationDescriptor>emptyList(), name);
if (!name.isSpecial()) { if (!name.isSpecial()) {
throw new IllegalArgumentException("module name must be special: " + name); throw new IllegalArgumentException("module name must be special: " + name);
} }
this.defaultImports = defaultImports;
} }
public void setRootNamespace(@NotNull NamespaceDescriptor rootNs) { public void setRootNamespace(@NotNull NamespaceDescriptor rootNs) {
@@ -69,7 +71,7 @@ public class ModuleDescriptorImpl extends DeclarationDescriptorImpl implements C
@NotNull @NotNull
@Override @Override
public List<ImportPath> getDefaultImports() { public List<ImportPath> getDefaultImports() {
return getModuleConfiguration().getDefaultImports(); return defaultImports;
} }
@NotNull @NotNull
@@ -186,7 +186,8 @@ public class TopDownAnalyzer {
@NotNull final DeclarationDescriptor containingDeclaration, @NotNull final DeclarationDescriptor containingDeclaration,
@NotNull JetClassOrObject object @NotNull JetClassOrObject object
) { ) {
ModuleDescriptorImpl moduleDescriptor = new ModuleDescriptorImpl(Name.special("<dummy for object>")); ModuleDescriptorImpl moduleDescriptor = new ModuleDescriptorImpl(Name.special("<dummy for object>"),
Collections.<ImportPath>emptyList());
moduleDescriptor.setModuleConfiguration(ModuleConfiguration.EMPTY); moduleDescriptor.setModuleConfiguration(ModuleConfiguration.EMPTY);
TopDownAnalysisParameters topDownAnalysisParameters = TopDownAnalysisParameters topDownAnalysisParameters =
@@ -22,6 +22,7 @@ import org.jetbrains.jet.lang.ModuleConfiguration;
import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.*; import org.jetbrains.jet.lang.descriptors.impl.*;
import org.jetbrains.jet.lang.resolve.ImportPath;
import org.jetbrains.jet.lang.resolve.name.LabelName; import org.jetbrains.jet.lang.resolve.name.LabelName;
import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.JetScope;
@@ -34,7 +35,7 @@ public class ErrorUtils {
private static final ModuleDescriptor ERROR_MODULE; private static final ModuleDescriptor ERROR_MODULE;
static { static {
ModuleDescriptorImpl module = new ModuleDescriptorImpl(Name.special("<ERROR MODULE>")); ModuleDescriptorImpl module = new ModuleDescriptorImpl(Name.special("<ERROR MODULE>"), Collections.<ImportPath>emptyList());
module.setModuleConfiguration(ModuleConfiguration.EMPTY); module.setModuleConfiguration(ModuleConfiguration.EMPTY);
ERROR_MODULE = module; ERROR_MODULE = module;
} }
@@ -170,7 +170,7 @@ public class KotlinBuiltIns {
private KotlinBuiltIns(@NotNull Project project) { private KotlinBuiltIns(@NotNull Project project) {
try { try {
this.builtInsModule = new ModuleDescriptorImpl(Name.special("<built-ins lazy module>")); this.builtInsModule = new ModuleDescriptorImpl(Name.special("<built-ins lazy module>"), DefaultModuleConfiguration.DEFAULT_JET_IMPORTS);
builtInsModule.setModuleConfiguration(SpecialModuleConfiguration.INSTANCE); builtInsModule.setModuleConfiguration(SpecialModuleConfiguration.INSTANCE);
this.analyzer = createLazyResolveSession(project); this.analyzer = createLazyResolveSession(project);
@@ -51,6 +51,7 @@ import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter; import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.ImportPath;
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM; import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
import org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestUtil; import org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestUtil;
import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.Name;
@@ -558,8 +559,12 @@ public class JetTestUtils {
return JetPsiFactory.createPhysicalFile(project, ioFile.getName(), text); return JetPsiFactory.createPhysicalFile(project, ioFile.getName(), text);
} }
public static ModuleDescriptor createEmptyModule() { public static ModuleDescriptorImpl createEmptyModule() {
ModuleDescriptorImpl descriptor = new ModuleDescriptorImpl(Name.special("<empty-for-test>")); return createEmptyModule("<empty-for-test>");
}
public static ModuleDescriptorImpl createEmptyModule(@NotNull String name) {
ModuleDescriptorImpl descriptor = new ModuleDescriptorImpl(Name.special(name), Collections.<ImportPath>emptyList());
descriptor.setModuleConfiguration(ModuleConfiguration.EMPTY); descriptor.setModuleConfiguration(ModuleConfiguration.EMPTY);
return descriptor; return descriptor;
} }
@@ -37,9 +37,9 @@ import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters; import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule; import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.test.TestCaseWithTmpdir; import org.jetbrains.jet.test.TestCaseWithTmpdir;
import org.junit.Assert; import org.junit.Assert;
@@ -138,7 +138,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
configuration.put(CommonConfigurationKeys.SOURCE_ROOTS_KEY, Arrays.asList(sourcesDir.getAbsolutePath())); configuration.put(CommonConfigurationKeys.SOURCE_ROOTS_KEY, Arrays.asList(sourcesDir.getAbsolutePath()));
JetCoreEnvironment environment = new JetCoreEnvironment(getTestRootDisposable(), configuration); JetCoreEnvironment environment = new JetCoreEnvironment(getTestRootDisposable(), configuration);
ModuleDescriptorImpl moduleDescriptor = new ModuleDescriptorImpl(Name.special("<test module>")); ModuleDescriptorImpl moduleDescriptor = AnalyzerFacadeForJVM.createJavaModule("<test module>");
// we need the same binding trace for resolve from Java and Kotlin // we need the same binding trace for resolve from Java and Kotlin
BindingTrace trace = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject()).getTrace(); BindingTrace trace = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject()).getTrace();
@@ -28,10 +28,10 @@ import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.di.InjectorForTopDownAnalyzer; import org.jetbrains.jet.di.InjectorForTopDownAnalyzer;
import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory; import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory;
import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedStorageManager; import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedStorageManager;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.renderer.DescriptorRenderer; import org.jetbrains.jet.renderer.DescriptorRenderer;
import java.io.File; import java.io.File;
@@ -54,7 +54,7 @@ public abstract class AbstractLazyResolveDescriptorRendererTest extends KotlinTe
JetFile psiFile = JetPsiFactory.createFile(getProject(), FileUtil.loadFile(new File(testFile), true)); JetFile psiFile = JetPsiFactory.createFile(getProject(), FileUtil.loadFile(new File(testFile), true));
Collection<JetFile> files = Lists.newArrayList(psiFile); Collection<JetFile> files = Lists.newArrayList(psiFile);
ModuleDescriptorImpl lazyModule = new ModuleDescriptorImpl(Name.special("<lazy module>")); ModuleDescriptorImpl lazyModule = AnalyzerFacadeForJVM.createJavaModule("<lazy module>");
lazyModule.setModuleConfiguration(injectorForTopDownAnalyzer.getModuleDescriptor().getModuleConfiguration()); lazyModule.setModuleConfiguration(injectorForTopDownAnalyzer.getModuleDescriptor().getModuleConfiguration());
LockBasedStorageManager storageManager = new LockBasedStorageManager(); LockBasedStorageManager storageManager = new LockBasedStorageManager();
final ResolveSession resolveSession = new ResolveSession(getProject(), storageManager, lazyModule, final ResolveSession resolveSession = new ResolveSession(getProject(), storageManager, lazyModule,
@@ -40,6 +40,7 @@ import org.jetbrains.jet.lang.psi.JetNamespaceHeader;
import org.jetbrains.jet.lang.psi.JetPsiFactory; import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression; import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
import org.jetbrains.jet.lang.resolve.*; import org.jetbrains.jet.lang.resolve.*;
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.JavaToKotlinClassMap; import org.jetbrains.jet.lang.resolve.java.JavaToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.java.PsiClassFinder; import org.jetbrains.jet.lang.resolve.java.PsiClassFinder;
@@ -60,7 +61,7 @@ public class LazyResolveTestUtil {
} }
public static InjectorForTopDownAnalyzer getEagerInjectorForTopDownAnalyzer(JetCoreEnvironment environment) { public static InjectorForTopDownAnalyzer getEagerInjectorForTopDownAnalyzer(JetCoreEnvironment environment) {
ModuleDescriptorImpl eagerModuleForLazy = new ModuleDescriptorImpl(Name.special("<eager module for lazy>")); ModuleDescriptorImpl eagerModuleForLazy = AnalyzerFacadeForJVM.createJavaModule("<eager module for lazy>");
InjectorForTopDownAnalyzer tdaInjectorForLazy = createInjectorForTDA(eagerModuleForLazy, environment); InjectorForTopDownAnalyzer tdaInjectorForLazy = createInjectorForTDA(eagerModuleForLazy, environment);
// This line is required fro the 'jet' namespace to be filled in with functions // This line is required fro the 'jet' namespace to be filled in with functions
@@ -81,7 +82,7 @@ public class LazyResolveTestUtil {
} }
public static ModuleDescriptor resolveEagerly(List<JetFile> files, JetCoreEnvironment environment) { public static ModuleDescriptor resolveEagerly(List<JetFile> files, JetCoreEnvironment environment) {
ModuleDescriptorImpl module = new ModuleDescriptorImpl(Name.special("<test module>")); ModuleDescriptorImpl module = AnalyzerFacadeForJVM.createJavaModule("<test module>");
InjectorForTopDownAnalyzer injector = createInjectorForTDA(module, environment); InjectorForTopDownAnalyzer injector = createInjectorForTDA(module, environment);
injector.getTopDownAnalyzer().analyzeFiles(files, Collections.<AnalyzerScriptParameter>emptyList()); injector.getTopDownAnalyzer().analyzeFiles(files, Collections.<AnalyzerScriptParameter>emptyList());
return module; return module;
@@ -90,7 +91,7 @@ public class LazyResolveTestUtil {
public static KotlinCodeAnalyzer resolveLazilyWithSession(List<JetFile> files, JetCoreEnvironment environment) { public static KotlinCodeAnalyzer resolveLazilyWithSession(List<JetFile> files, JetCoreEnvironment environment) {
JetTestUtils.newTrace(environment); JetTestUtils.newTrace(environment);
ModuleDescriptorImpl javaModule = new ModuleDescriptorImpl(Name.special("<java module>")); ModuleDescriptorImpl javaModule = AnalyzerFacadeForJVM.createJavaModule("<java module>");
Project project = environment.getProject(); Project project = environment.getProject();
BindingTrace sharedTrace = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject()).getTrace(); BindingTrace sharedTrace = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject()).getTrace();
@@ -141,7 +142,7 @@ public class LazyResolveTestUtil {
}; };
javaModule.setModuleConfiguration(moduleConfiguration); javaModule.setModuleConfiguration(moduleConfiguration);
ModuleDescriptorImpl lazyModule = new ModuleDescriptorImpl(Name.special("<lazy module>")); ModuleDescriptorImpl lazyModule = AnalyzerFacadeForJVM.createJavaModule("<lazy module>");
lazyModule.setModuleConfiguration(moduleConfiguration); lazyModule.setModuleConfiguration(moduleConfiguration);
return new ResolveSession(project, storageManager, lazyModule, declarationProviderFactory, sharedTrace); return new ResolveSession(project, storageManager, lazyModule, declarationProviderFactory, sharedTrace);
} }
@@ -60,7 +60,7 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
} }
public class JetDefaultModalityModifiersTestCase { public class JetDefaultModalityModifiersTestCase {
private ModuleDescriptorImpl root = new ModuleDescriptorImpl(Name.special("<test_root>")); private ModuleDescriptorImpl root = JetTestUtils.createEmptyModule("<test_root>");
private DescriptorResolver descriptorResolver; private DescriptorResolver descriptorResolver;
private JetScope scope; private JetScope scope;
@@ -24,17 +24,15 @@ import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.di.InjectorForTests; import org.jetbrains.jet.di.InjectorForTests;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.psi.JetNamedFunction; import org.jetbrains.jet.lang.psi.JetNamedFunction;
import org.jetbrains.jet.lang.psi.JetPsiFactory; import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.resolve.DescriptorResolver; import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.OverloadUtil; import org.jetbrains.jet.lang.resolve.OverloadUtil;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
public class JetOverloadTest extends JetLiteFixture { public class JetOverloadTest extends JetLiteFixture {
private ModuleDescriptor root = new ModuleDescriptorImpl(Name.special("<test_root>")); private ModuleDescriptor root = JetTestUtils.createEmptyModule("<test_root>");
private KotlinBuiltIns builtIns; private KotlinBuiltIns builtIns;
private DescriptorResolver descriptorResolver; private DescriptorResolver descriptorResolver;
@@ -24,17 +24,15 @@ import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.di.InjectorForTests; import org.jetbrains.jet.di.InjectorForTests;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.psi.JetNamedFunction; import org.jetbrains.jet.lang.psi.JetNamedFunction;
import org.jetbrains.jet.lang.psi.JetPsiFactory; import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.resolve.DescriptorResolver; import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.OverridingUtil; import org.jetbrains.jet.lang.resolve.OverridingUtil;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
public class JetOverridingTest extends JetLiteFixture { public class JetOverridingTest extends JetLiteFixture {
private ModuleDescriptor root = new ModuleDescriptorImpl(Name.special("<test_root>")); private ModuleDescriptor root = JetTestUtils.createEmptyModule("<test_root>");
private KotlinBuiltIns builtIns; private KotlinBuiltIns builtIns;
private DescriptorResolver descriptorResolver; private DescriptorResolver descriptorResolver;
@@ -183,7 +183,8 @@ public class GenerateInjectors {
generator.addPublicField(PsiClassFinderImpl.class); generator.addPublicField(PsiClassFinderImpl.class);
generator.addField(false, ModuleDescriptorImpl.class, null, generator.addField(false, ModuleDescriptorImpl.class, null,
new GivenExpression("new org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl(" + new GivenExpression("new org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl(" +
"org.jetbrains.jet.lang.resolve.name.Name.special(\"<dummy>\"))")); "org.jetbrains.jet.lang.resolve.name.Name.special(\"<dummy>\"), " +
"JavaBridgeConfiguration.ALL_JAVA_IMPORTS)"));
// Parameters // Parameters
generator.addPublicParameter(Project.class); generator.addPublicParameter(Project.class);
@@ -38,6 +38,7 @@ import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.DelegatingBindingTrace; import org.jetbrains.jet.lang.resolve.DelegatingBindingTrace;
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.scope.JavaClassNonStaticMembersScope; import org.jetbrains.jet.lang.resolve.java.scope.JavaClassNonStaticMembersScope;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
@@ -116,7 +117,7 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider {
BindingContext bindingContext = declarationsCache.getBindingContext(); BindingContext bindingContext = declarationsCache.getBindingContext();
DelegatingBindingTrace delegatingTrace = new DelegatingBindingTrace(bindingContext, "wrapped context of declarations cache"); DelegatingBindingTrace delegatingTrace = new DelegatingBindingTrace(bindingContext, "wrapped context of declarations cache");
ModuleDescriptorImpl moduleDescriptor = new ModuleDescriptorImpl(Name.special("<fake>")); ModuleDescriptorImpl moduleDescriptor = AnalyzerFacadeForJVM.createJavaModule("<fake>");
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, delegatingTrace, moduleDescriptor); InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, delegatingTrace, moduleDescriptor);
moduleDescriptor.setModuleConfiguration(injector.getJavaBridgeConfiguration()); moduleDescriptor.setModuleConfiguration(injector.getJavaBridgeConfiguration());
return injector; return injector;
@@ -221,7 +221,7 @@ public class JetSourceNavigationHelper {
return KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.equals(fqName); return KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.equals(fqName);
} }
}); });
ModuleDescriptorImpl moduleDescriptor = new ModuleDescriptorImpl(Name.special("<library module>")); ModuleDescriptorImpl moduleDescriptor = new ModuleDescriptorImpl(Name.special("<library module>"), DefaultModuleConfiguration.DEFAULT_JET_IMPORTS);
moduleDescriptor.setModuleConfiguration(DefaultModuleConfiguration.createStandardConfiguration()); moduleDescriptor.setModuleConfiguration(DefaultModuleConfiguration.createStandardConfiguration());
KotlinCodeAnalyzer analyzer = new ResolveSession( KotlinCodeAnalyzer analyzer = new ResolveSession(
project, project,
@@ -226,7 +226,8 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent {
private FakeJetNamespaceDescriptor() { private FakeJetNamespaceDescriptor() {
super(new NamespaceDescriptorImpl( super(new NamespaceDescriptorImpl(
new ModuleDescriptorImpl(Name.special("<fake_module>")).setModuleConfiguration(ModuleConfiguration.EMPTY), new ModuleDescriptorImpl(Name.special("<fake_module>"), Collections.<ImportPath>emptyList())
.setModuleConfiguration(ModuleConfiguration.EMPTY),
Collections.<AnnotationDescriptor>emptyList(), Name.special("<root>")), Collections.<AnnotationDescriptor>emptyList(), Collections.<AnnotationDescriptor>emptyList(), Name.special("<root>")), Collections.<AnnotationDescriptor>emptyList(),
KotlinBuiltIns.getInstance().getBuiltInsPackage().getName()); KotlinBuiltIns.getInstance().getBuiltInsPackage().getName());
} }
@@ -76,7 +76,7 @@ public final class AnalyzerFacadeForJS {
boolean storeContextForBodiesResolve) { boolean storeContextForBodiesResolve) {
Project project = config.getProject(); Project project = config.getProject();
ModuleDescriptorImpl owner = new ModuleDescriptorImpl(Name.special("<module>")); ModuleDescriptorImpl owner = new ModuleDescriptorImpl(Name.special("<module>"), JsConfiguration.DEFAULT_IMPORT_PATHS);
Predicate<PsiFile> completely = Predicates.and(notLibFiles(config.getLibFiles()), filesToAnalyzeCompletely); Predicate<PsiFile> completely = Predicates.and(notLibFiles(config.getLibFiles()), filesToAnalyzeCompletely);
@@ -142,7 +142,7 @@ public final class AnalyzerFacadeForJS {
LockBasedStorageManager storageManager = new LockBasedStorageManager(); LockBasedStorageManager storageManager = new LockBasedStorageManager();
FileBasedDeclarationProviderFactory declarationProviderFactory = new FileBasedDeclarationProviderFactory( FileBasedDeclarationProviderFactory declarationProviderFactory = new FileBasedDeclarationProviderFactory(
storageManager, Config.withJsLibAdded(files, config), Predicates.<FqName>alwaysFalse()); storageManager, Config.withJsLibAdded(files, config), Predicates.<FqName>alwaysFalse());
ModuleDescriptorImpl lazyModule = new ModuleDescriptorImpl(Name.special("<lazy module>")); ModuleDescriptorImpl lazyModule = new ModuleDescriptorImpl(Name.special("<lazy module>"), JsConfiguration.DEFAULT_IMPORT_PATHS);
lazyModule.setModuleConfiguration(new JsConfiguration(null)); lazyModule.setModuleConfiguration(new JsConfiguration(null));
return new ResolveSession(config.getProject(), storageManager, lazyModule, declarationProviderFactory); return new ResolveSession(config.getProject(), storageManager, lazyModule, declarationProviderFactory);
} }