Big refactoring. Migrating to package views and fragments.
This commit is contained in:
@@ -26,10 +26,7 @@ import org.jetbrains.jet.JetTestUtils;
|
||||
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
||||
import org.jetbrains.jet.config.CompilerConfiguration;
|
||||
import org.jetbrains.jet.descriptors.serialization.*;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.psi.JetFile;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestUtil;
|
||||
@@ -40,6 +37,7 @@ import org.jetbrains.jet.test.util.DescriptorValidator;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@@ -68,10 +66,11 @@ public class BuiltInsSerializer {
|
||||
|
||||
ModuleDescriptor module = LazyResolveTestUtil.resolveLazily(files, environment, false);
|
||||
|
||||
NamespaceDescriptor namespace = module.getNamespace(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME);
|
||||
assert namespace != null : "No built-ins namespace: " + KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME;
|
||||
PackageFragmentDescriptor fragmentDescriptor = module.getPackageFragmentProvider()
|
||||
.getPackageFragments(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME).get(0); // TODO 1 hack
|
||||
assert fragmentDescriptor != null : "No built-ins package: " + KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME;
|
||||
|
||||
DescriptorValidator.validate(namespace);
|
||||
DescriptorValidator.validate(fragmentDescriptor);
|
||||
|
||||
if (!FileUtil.delete(destDir)) {
|
||||
System.err.println("Could not delete: " + destDir);
|
||||
@@ -90,7 +89,7 @@ public class BuiltInsSerializer {
|
||||
});
|
||||
|
||||
final List<Name> classNames = new ArrayList<Name>();
|
||||
List<DeclarationDescriptor> allDescriptors = DescriptorSerializer.sort(namespace.getMemberScope().getAllDescriptors());
|
||||
List<DeclarationDescriptor> allDescriptors = DescriptorSerializer.sort(fragmentDescriptor.getMemberScope().getAllDescriptors());
|
||||
ClassSerializationUtil.serializeClasses(allDescriptors, serializer, new ClassSerializationUtil.Sink() {
|
||||
@Override
|
||||
public void writeClass(@NotNull ClassDescriptor classDescriptor, @NotNull ProtoBuf.Class classProto) {
|
||||
@@ -111,16 +110,16 @@ public class BuiltInsSerializer {
|
||||
|
||||
ByteArrayOutputStream classNamesStream = new ByteArrayOutputStream();
|
||||
writeClassNames(serializer, classNames, classNamesStream);
|
||||
write(destDir, BuiltInsSerializationUtil.getClassNamesFilePath(namespace), classNamesStream, out);
|
||||
write(destDir, BuiltInsSerializationUtil.getClassNamesFilePath(fragmentDescriptor), classNamesStream, out);
|
||||
|
||||
ByteArrayOutputStream packageStream = new ByteArrayOutputStream();
|
||||
ProtoBuf.Package packageProto = serializer.packageProto(namespace).build();
|
||||
ProtoBuf.Package packageProto = serializer.packageProto(Collections.singleton(fragmentDescriptor)).build();
|
||||
packageProto.writeTo(packageStream);
|
||||
write(destDir, BuiltInsSerializationUtil.getPackageFilePath(namespace), packageStream, out);
|
||||
write(destDir, BuiltInsSerializationUtil.getPackageFilePath(fragmentDescriptor), packageStream, out);
|
||||
|
||||
ByteArrayOutputStream nameStream = new ByteArrayOutputStream();
|
||||
NameSerializationUtil.serializeNameTable(nameStream, serializer.getNameTable());
|
||||
write(destDir, BuiltInsSerializationUtil.getNameTableFilePath(namespace), nameStream, out);
|
||||
write(destDir, BuiltInsSerializationUtil.getNameTableFilePath(fragmentDescriptor), nameStream, out);
|
||||
|
||||
if (out != null) {
|
||||
out.println("Total bytes written: " + totalSize + " to " + totalFiles + " files");
|
||||
|
||||
@@ -103,6 +103,7 @@ public class GenerateInjectors {
|
||||
DependencyInjectorGenerator generator = new DependencyInjectorGenerator();
|
||||
generateInjectorForTopDownAnalyzerCommon(generator);
|
||||
generator.addField(DependencyClassByQualifiedNameResolverDummyImpl.class);
|
||||
generator.addField(MutablePackageFragmentProvider.class);
|
||||
generator.addField(NamespaceFactoryImpl.class);
|
||||
generator.addParameter(PlatformToKotlinClassMap.class);
|
||||
generator.configure("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic", GenerateInjectors.class);
|
||||
@@ -113,6 +114,7 @@ public class GenerateInjectors {
|
||||
DependencyInjectorGenerator generator = new DependencyInjectorGenerator();
|
||||
generateInjectorForTopDownAnalyzerCommon(generator);
|
||||
generator.addField(DependencyClassByQualifiedNameResolverDummyImpl.class);
|
||||
generator.addField(MutablePackageFragmentProvider.class);
|
||||
generator.addField(NamespaceFactoryImpl.class);
|
||||
generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("org.jetbrains.jet.lang.PlatformToKotlinClassMap.EMPTY"));
|
||||
generator.configure("js/js.translator/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs", GenerateInjectors.class);
|
||||
@@ -133,7 +135,8 @@ public class GenerateInjectors {
|
||||
generator.addField(PsiBasedMethodSignatureChecker.class);
|
||||
generator.addField(PsiBasedExternalAnnotationResolver.class);
|
||||
generator.addField(VirtualFileKotlinClassFinder.class);
|
||||
generator.addPublicField(NamespaceFactoryImpl.class);
|
||||
generator.addField(MutablePackageFragmentProvider.class);
|
||||
generator.addField(NamespaceFactoryImpl.class);
|
||||
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
||||
new GivenExpression(
|
||||
"com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class)"));
|
||||
@@ -160,9 +163,11 @@ public class GenerateInjectors {
|
||||
generator.addField(VirtualFileKotlinClassFinder.class);
|
||||
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
||||
new GivenExpression("com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class)"));
|
||||
generator.addField(true, ModuleDescriptorImpl.class, "module",
|
||||
new GivenExpression("org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule(\"<fake-jdr-module>\")"));
|
||||
|
||||
generator.configure("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForJavaDescriptorResolver",
|
||||
GenerateInjectors.class);
|
||||
GenerateInjectors.class);
|
||||
return generator;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user