Replace ModuleDescriptorImpl implementation

Change the way modules are configured:
Add dependencies on other modules instead of adding additional package fragment providers
Refactor related code
Drop DependencyKind
Hide common new module creation in CliLightClassGenerationSupport
This commit is contained in:
Pavel V. Talanov
2014-07-30 16:45:02 +04:00
parent 145aa5a276
commit 8496c535aa
30 changed files with 326 additions and 297 deletions
@@ -38,14 +38,10 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingContext;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.storage.LockBasedStorageManager;
import javax.inject.Inject;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.*;
public class TopDownAnalyzer {
@@ -253,16 +249,24 @@ public class TopDownAnalyzer {
@NotNull
public TopDownAnalysisContext analyzeFiles(
@NotNull TopDownAnalysisParameters topDownAnalysisParameters,
@NotNull Collection<JetFile> files
@NotNull Collection<JetFile> files,
@NotNull PackageFragmentProvider... additionalProviders
) {
((ModuleDescriptorImpl) moduleDescriptor).addFragmentProvider(DependencyKind.SOURCES, packageFragmentProvider);
return analyzeFiles(topDownAnalysisParameters, files, Arrays.asList(additionalProviders));
}
// "depend on" builtins module
((ModuleDescriptorImpl) moduleDescriptor).addFragmentProvider(DependencyKind.BUILT_INS, KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
@NotNull
public TopDownAnalysisContext analyzeFiles(
@NotNull TopDownAnalysisParameters topDownAnalysisParameters,
@NotNull Collection<JetFile> files,
@NotNull List<PackageFragmentProvider> additionalProviders
) {
CompositePackageFragmentProvider provider =
new CompositePackageFragmentProvider(KotlinPackage.plus(Arrays.asList(packageFragmentProvider), additionalProviders));
((ModuleDescriptorImpl) moduleDescriptor).initialize(provider);
// dummy builder is used because "root" is module descriptor,
// packages added to module explicitly in
TopDownAnalysisContext c = new TopDownAnalysisContext(topDownAnalysisParameters);
doProcess(c, JetModuleUtil.getSubpackagesOfRootScope(moduleDescriptor), new PackageLikeBuilderDummy(), files);
return c;
@@ -150,9 +150,6 @@ public class ResolveSession implements KotlinCodeAnalyzer {
}
};
// TODO: parameter modification
rootDescriptor.addFragmentProvider(DependencyKind.SOURCES, packageFragmentProvider);
this.scriptDescriptors = storageManager.createMemoizedFunction(
new Function1<JetScript, LazyScriptDescriptor>() {
@Override