From 372ab7954b223a34b20af2428003c655336d0cd0 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 27 Dec 2013 12:55:57 +0400 Subject: [PATCH] Got rid of getExactlyOnePackageFragment() --- .../AbstractDescriptorSerializationTest.java | 18 +++++++------ .../jet/types/JetTypeCheckerTest.java | 9 ++++--- .../jet/lang/resolve/DescriptorUtils.java | 9 ------- .../types/lang/BuiltInsSerializationUtil.java | 10 +++----- .../types/lang/BuiltinsPackageFragment.java | 6 ++--- .../builtins/BuiltInsSerializer.java | 25 +++++++++---------- 6 files changed, 34 insertions(+), 43 deletions(-) diff --git a/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java b/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java index 313d4078ad2..516899753f8 100644 --- a/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java +++ b/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java @@ -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 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 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(); } diff --git a/compiler/tests/org/jetbrains/jet/types/JetTypeCheckerTest.java b/compiler/tests/org/jetbrains/jet/types/JetTypeCheckerTest.java index 1b0e5738f04..a99a6c7f067 100644 --- a/compiler/tests/org/jetbrains/jet/types/JetTypeCheckerTest.java +++ b/compiler/tests/org/jetbrains/jet/types/JetTypeCheckerTest.java @@ -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") diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java index 5e2abe793f6..28c69dc4c66 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java @@ -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 packageFragments = module.getPackageFragmentProvider().getPackageFragments(fqName); - assert packageFragments.size() == 1 : "Exactly one package fragment expected: " + packageFragments; - return packageFragments.get(0); - } } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltInsSerializationUtil.java b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltInsSerializationUtil.java index fb2293d6d2b..45e146d334f 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltInsSerializationUtil.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltInsSerializationUtil.java @@ -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; } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltinsPackageFragment.java b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltinsPackageFragment.java index e3566677f83..f001cb7e4c2 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltinsPackageFragment.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltinsPackageFragment.java @@ -35,7 +35,7 @@ class BuiltinsPackageFragment extends DeclarationDescriptorImpl implements Packa public BuiltinsPackageFragment(@NotNull StorageManager storageManager, @NotNull ModuleDescriptor module) { super(Collections.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 invoke() { - InputStream in = getStream(BuiltInsSerializationUtil.getClassNamesFilePath(BuiltinsPackageFragment.this)); + InputStream in = getStream(BuiltInsSerializationUtil.getClassNamesFilePath(getFqName())); try { DataInputStream data = new DataInputStream(in); diff --git a/generators/src/org/jetbrains/jet/generators/builtins/BuiltInsSerializer.java b/generators/src/org/jetbrains/jet/generators/builtins/BuiltInsSerializer.java index 0aa0374c892..4e52c7d045f 100644 --- a/generators/src/org/jetbrains/jet/generators/builtins/BuiltInsSerializer.java +++ b/generators/src/org/jetbrains/jet/generators/builtins/BuiltInsSerializer.java @@ -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 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 classNames = new ArrayList(); - List allDescriptors = DescriptorSerializer.sort(packageFragment.getMemberScope().getAllDescriptors()); + List 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 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");