Big refactoring. Migrating to package views and fragments.

This commit is contained in:
Evgeny Gerashchenko
2013-10-11 21:43:40 +04:00
parent 369824cd2e
commit 7abe6a5b4a
141 changed files with 1728 additions and 1465 deletions
@@ -28,6 +28,7 @@ import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
@@ -66,6 +67,7 @@ public class InjectorForTopDownAnalyzerForJs {
private final BindingTrace bindingTrace;
private final ModuleDescriptorImpl moduleDescriptor;
private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
private final NamespaceFactoryImpl namespaceFactory;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final DeclarationResolver declarationResolver;
@@ -105,6 +107,7 @@ public class InjectorForTopDownAnalyzerForJs {
this.bindingTrace = bindingTrace;
this.moduleDescriptor = moduleDescriptor;
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
this.namespaceFactory = new NamespaceFactoryImpl();
this.platformToKotlinClassMap = org.jetbrains.jet.lang.PlatformToKotlinClassMap.EMPTY;
this.declarationResolver = new DeclarationResolver();
@@ -130,9 +133,9 @@ public class InjectorForTopDownAnalyzerForJs {
this.topDownAnalyzer.setContext(topDownAnalysisContext);
this.topDownAnalyzer.setDeclarationResolver(declarationResolver);
this.topDownAnalyzer.setModuleDescriptor(moduleDescriptor);
this.topDownAnalyzer.setNamespaceFactory(namespaceFactory);
this.topDownAnalyzer.setOverloadResolver(overloadResolver);
this.topDownAnalyzer.setOverrideResolver(overrideResolver);
this.topDownAnalyzer.setPackageFragmentProvider(mutablePackageFragmentProvider);
this.topDownAnalyzer.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.topDownAnalyzer.setTrace(bindingTrace);
this.topDownAnalyzer.setTypeHierarchyResolver(typeHierarchyResolver);
@@ -161,7 +164,8 @@ public class InjectorForTopDownAnalyzerForJs {
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
this.descriptorResolver.setTypeResolver(typeResolver);
namespaceFactory.setModuleDescriptor(moduleDescriptor);
namespaceFactory.setModule(moduleDescriptor);
namespaceFactory.setPackageFragmentProvider(mutablePackageFragmentProvider);
namespaceFactory.setTrace(bindingTrace);
declarationResolver.setAnnotationResolver(annotationResolver);
@@ -54,18 +54,19 @@ public final class NamespaceDeclarationTranslator extends AbstractTranslator {
NamespaceDescriptor rootNamespaceDescriptor = null;
for (JetFile file : files) {
NamespaceDescriptor descriptor = context().bindingContext().get(BindingContext.FILE_TO_NAMESPACE, file);
assert descriptor != null;
NamespaceTranslator translator = descriptorToTranslator.get(descriptor);
if (translator == null) {
if (rootNamespaceDescriptor == null) {
rootNamespaceDescriptor = getRootPackageDescriptor(descriptorToDefineInvocation, descriptor);
}
translator = new NamespaceTranslator(descriptor, descriptorToDefineInvocation, context());
descriptorToTranslator.put(descriptor, translator);
}
translator.translate(file);
// TODO 1
//NamespaceDescriptor descriptor = context().bindingContext().get(BindingContext.FILE_TO_NAMESPACE, file);
//assert descriptor != null;
//NamespaceTranslator translator = descriptorToTranslator.get(descriptor);
//if (translator == null) {
// if (rootNamespaceDescriptor == null) {
// rootNamespaceDescriptor = getRootPackageDescriptor(descriptorToDefineInvocation, descriptor);
// }
// translator = new NamespaceTranslator(descriptor, descriptorToDefineInvocation, context());
// descriptorToTranslator.put(descriptor, translator);
//}
//
//translator.translate(file);
}
if (rootNamespaceDescriptor == null) {
@@ -185,7 +185,7 @@ public final class JsDescriptorUtils {
@Nullable
public static Name getNameIfStandardType(@NotNull JetType type) {
ClassifierDescriptor descriptor = type.getConstructor().getDeclarationDescriptor();
if (descriptor != null && descriptor.getContainingDeclaration() == KotlinBuiltIns.getInstance().getBuiltInsPackage()) {
if (descriptor != null && descriptor.getContainingDeclaration() == KotlinBuiltIns.getInstance().getBuiltInsPackageFragment()) {
return descriptor.getName();
}