Got rid of getExactlyOnePackageFragment()
This commit is contained in:
+11
-7
@@ -26,8 +26,8 @@ import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.impl.PackageViewDescriptorImpl;
|
||||
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestUtil;
|
||||
@@ -62,22 +62,24 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith
|
||||
JetTestUtils.createFile(ktFile.getName(), FileUtil.loadFile(ktFile), getProject())
|
||||
), getEnvironment());
|
||||
|
||||
PackageFragmentDescriptor testPackage = DescriptorUtils.getExactlyOnePackageFragment(
|
||||
moduleDescriptor, FqName.topLevel(TEST_PACKAGE_NAME));
|
||||
PackageViewDescriptor testPackage = moduleDescriptor.getPackage(FqName.topLevel(TEST_PACKAGE_NAME));
|
||||
assert testPackage != null : "Test package not found: " + TEST_PACKAGE_NAME;
|
||||
|
||||
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(getProject(), new BindingTraceContext());
|
||||
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
||||
|
||||
PackageFragmentDescriptor deserialized = serializeAndDeserialize(javaDescriptorResolver, testPackage);
|
||||
|
||||
PackageViewDescriptorImpl deserializedPackageView =
|
||||
new PackageViewDescriptorImpl(moduleDescriptor, deserialized.getFqName(), Arrays.asList(deserialized));
|
||||
RecursiveDescriptorComparator
|
||||
.validateAndCompareDescriptors(testPackage, deserialized, RecursiveDescriptorComparator.RECURSIVE, null);
|
||||
.validateAndCompareDescriptors(testPackage, deserializedPackageView, RecursiveDescriptorComparator.RECURSIVE, null);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static PackageFragmentDescriptor serializeAndDeserialize(
|
||||
@NotNull JavaDescriptorResolver javaDescriptorResolver,
|
||||
@NotNull PackageFragmentDescriptor testPackage
|
||||
@NotNull PackageViewDescriptor testPackage
|
||||
) {
|
||||
List<ClassDescriptor> classesAndObjects = getAllClassesAndObjects(testPackage.getMemberScope());
|
||||
|
||||
@@ -137,9 +139,11 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static byte[] serializePackage(@NotNull PackageFragmentDescriptor descriptor) {
|
||||
private static byte[] serializePackage(@NotNull PackageViewDescriptor descriptor) {
|
||||
DescriptorSerializer serializer = new DescriptorSerializer();
|
||||
ProtoBuf.Package proto = serializer.packageProto(Collections.singleton(descriptor)).build();
|
||||
List<PackageFragmentDescriptor> fragments =
|
||||
descriptor.getModule().getPackageFragmentProvider().getPackageFragments(descriptor.getFqName());
|
||||
ProtoBuf.Package proto = serializer.packageProto(fragments).build();
|
||||
PackageData data = new PackageData(createNameResolver(serializer.getNameTable()), proto);
|
||||
return data.toBytes();
|
||||
}
|
||||
|
||||
@@ -29,13 +29,12 @@ import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
|
||||
import org.jetbrains.jet.di.InjectorForTests;
|
||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.impl.ReceiverParameterDescriptorImpl;
|
||||
import org.jetbrains.jet.lang.psi.JetExpression;
|
||||
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
||||
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.resolve.ImportPath;
|
||||
import org.jetbrains.jet.lang.resolve.TypeResolver;
|
||||
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
|
||||
@@ -578,8 +577,10 @@ public class JetTypeCheckerTest extends JetLiteFixture {
|
||||
getEnvironment()
|
||||
);
|
||||
|
||||
PackageFragmentDescriptor testData = DescriptorUtils.getExactlyOnePackageFragment(moduleDescriptor, new FqName("testData"));
|
||||
return addImports(testData.getMemberScope());
|
||||
FqName fqName = new FqName("testData");
|
||||
PackageViewDescriptor packageView = moduleDescriptor.getPackage(fqName);
|
||||
assertNotNull("Package " + fqName + " not found", packageView);
|
||||
return addImports(packageView.getMemberScope());
|
||||
}
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
|
||||
@@ -21,7 +21,6 @@ import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.descriptors.impl.AnonymousFunctionDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
@@ -470,12 +469,4 @@ public class DescriptorUtils {
|
||||
return isTopLevelDeclaration(descriptor) ||
|
||||
containing instanceof ClassDescriptor && isTopLevelOrInnerClass((ClassDescriptor) containing);
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
@NotNull
|
||||
public static PackageFragmentDescriptor getExactlyOnePackageFragment(@NotNull ModuleDescriptor module, @NotNull FqName fqName) {
|
||||
List<PackageFragmentDescriptor> packageFragments = module.getPackageFragmentProvider().getPackageFragments(fqName);
|
||||
assert packageFragments.size() == 1 : "Exactly one package fragment expected: " + packageFragments;
|
||||
return packageFragments.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-7
@@ -18,7 +18,6 @@ package org.jetbrains.jet.lang.types.lang;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.descriptors.serialization.ClassId;
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
@@ -56,20 +55,17 @@ public class BuiltInsSerializationUtil {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String getPackageFilePath(@NotNull PackageFragmentDescriptor packageFragment) {
|
||||
FqName fqName = packageFragment.getFqName();
|
||||
public static String getPackageFilePath(@NotNull FqName fqName) {
|
||||
return packageFqNameToPath(fqName) + "/" + PACKAGE_FILE_NAME;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String getNameTableFilePath(@NotNull PackageFragmentDescriptor packageFragment) {
|
||||
FqName fqName = packageFragment.getFqName();
|
||||
public static String getNameTableFilePath(@NotNull FqName fqName) {
|
||||
return packageFqNameToPath(fqName) + "/" + NAME_TABLE_FILE_NAME;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String getClassNamesFilePath(@NotNull PackageFragmentDescriptor packageFragmentDescriptor) {
|
||||
FqName fqName = packageFragmentDescriptor.getFqName();
|
||||
public static String getClassNamesFilePath(@NotNull FqName fqName) {
|
||||
return packageFqNameToPath(fqName) + "/" + CLASS_NAMES_FILE_NAME;
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ class BuiltinsPackageFragment extends DeclarationDescriptorImpl implements Packa
|
||||
public BuiltinsPackageFragment(@NotNull StorageManager storageManager, @NotNull ModuleDescriptor module) {
|
||||
super(Collections.<AnnotationDescriptor>emptyList(), KotlinBuiltIns.BUILT_INS_PACKAGE_NAME);
|
||||
this.module = module;
|
||||
nameResolver = NameSerializationUtil.deserializeNameResolver(getStream(BuiltInsSerializationUtil.getNameTableFilePath(this)));
|
||||
nameResolver = NameSerializationUtil.deserializeNameResolver(getStream(BuiltInsSerializationUtil.getNameTableFilePath(getFqName())));
|
||||
|
||||
packageFragmentProvider = new BuiltinsPackageFragmentProvider();
|
||||
|
||||
@@ -45,7 +45,7 @@ class BuiltinsPackageFragment extends DeclarationDescriptorImpl implements Packa
|
||||
|
||||
@NotNull
|
||||
private ProtoBuf.Package loadPackage() {
|
||||
String packageFilePath = BuiltInsSerializationUtil.getPackageFilePath(this);
|
||||
String packageFilePath = BuiltInsSerializationUtil.getPackageFilePath(getFqName());
|
||||
InputStream stream = getStream(packageFilePath);
|
||||
try {
|
||||
return ProtoBuf.Package.parseFrom(stream);
|
||||
@@ -139,7 +139,7 @@ class BuiltinsPackageFragment extends DeclarationDescriptorImpl implements Packa
|
||||
@Override
|
||||
@NotNull
|
||||
public Collection<Name> invoke() {
|
||||
InputStream in = getStream(BuiltInsSerializationUtil.getClassNamesFilePath(BuiltinsPackageFragment.this));
|
||||
InputStream in = getStream(BuiltInsSerializationUtil.getClassNamesFilePath(getFqName()));
|
||||
|
||||
try {
|
||||
DataInputStream data = new DataInputStream(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.PackageFragmentDescriptor;
|
||||
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,7 +37,6 @@ 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,9 +64,10 @@ public class BuiltInsSerializer {
|
||||
List<JetFile> files = JetTestUtils.loadToJetFiles(environment, sourceFiles);
|
||||
|
||||
ModuleDescriptor module = LazyResolveTestUtil.resolveLazily(files, environment, false);
|
||||
PackageFragmentDescriptor packageFragment = DescriptorUtils.getExactlyOnePackageFragment(
|
||||
module, KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME);
|
||||
DescriptorValidator.validate(packageFragment);
|
||||
PackageViewDescriptor packageView = module.getPackage(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME);
|
||||
assert packageView != null : "Package not found: " + KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME;
|
||||
|
||||
DescriptorValidator.validate(packageView);
|
||||
|
||||
if (!FileUtil.delete(destDir)) {
|
||||
System.err.println("Could not delete: " + destDir);
|
||||
@@ -89,7 +86,7 @@ public class BuiltInsSerializer {
|
||||
});
|
||||
|
||||
final List<Name> classNames = new ArrayList<Name>();
|
||||
List<DeclarationDescriptor> allDescriptors = DescriptorSerializer.sort(packageFragment.getMemberScope().getAllDescriptors());
|
||||
List<DeclarationDescriptor> allDescriptors = DescriptorSerializer.sort(packageView.getMemberScope().getAllDescriptors());
|
||||
ClassSerializationUtil.serializeClasses(allDescriptors, serializer, new ClassSerializationUtil.Sink() {
|
||||
@Override
|
||||
public void writeClass(@NotNull ClassDescriptor classDescriptor, @NotNull ProtoBuf.Class classProto) {
|
||||
@@ -110,16 +107,18 @@ public class BuiltInsSerializer {
|
||||
|
||||
ByteArrayOutputStream classNamesStream = new ByteArrayOutputStream();
|
||||
writeClassNames(serializer, classNames, classNamesStream);
|
||||
write(destDir, BuiltInsSerializationUtil.getClassNamesFilePath(packageFragment), classNamesStream, out);
|
||||
write(destDir, BuiltInsSerializationUtil.getClassNamesFilePath(packageView.getFqName()), classNamesStream, out);
|
||||
|
||||
ByteArrayOutputStream packageStream = new ByteArrayOutputStream();
|
||||
ProtoBuf.Package packageProto = serializer.packageProto(Collections.singleton(packageFragment)).build();
|
||||
List<PackageFragmentDescriptor> fragments =
|
||||
module.getPackageFragmentProvider().getPackageFragments(packageView.getFqName());
|
||||
ProtoBuf.Package packageProto = serializer.packageProto(fragments).build();
|
||||
packageProto.writeTo(packageStream);
|
||||
write(destDir, BuiltInsSerializationUtil.getPackageFilePath(packageFragment), packageStream, out);
|
||||
write(destDir, BuiltInsSerializationUtil.getPackageFilePath(packageView.getFqName()), packageStream, out);
|
||||
|
||||
ByteArrayOutputStream nameStream = new ByteArrayOutputStream();
|
||||
NameSerializationUtil.serializeNameTable(nameStream, serializer.getNameTable());
|
||||
write(destDir, BuiltInsSerializationUtil.getNameTableFilePath(packageFragment), nameStream, out);
|
||||
write(destDir, BuiltInsSerializationUtil.getNameTableFilePath(packageView.getFqName()), nameStream, out);
|
||||
|
||||
if (out != null) {
|
||||
out.println("Total bytes written: " + totalSize + " to " + totalFiles + " files");
|
||||
|
||||
Reference in New Issue
Block a user