diff --git a/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java b/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java index 901ac3c6282..03088896a8c 100644 --- a/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java +++ b/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java @@ -26,6 +26,7 @@ import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor; 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; @@ -60,9 +61,8 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith JetTestUtils.createFile(ktFile.getName(), FileUtil.loadFile(ktFile), getProject()) ), getEnvironment()); - PackageFragmentDescriptor testPackage = moduleDescriptor.getPackageFragmentProvider() - .getPackageFragments(FqName.topLevel(TEST_PACKAGE_NAME)).get(0); // TODO 2 hack - assert testPackage != null; + PackageFragmentDescriptor testPackage = DescriptorUtils.getExactlyOnePackageFragment( + moduleDescriptor, FqName.topLevel(TEST_PACKAGE_NAME)); InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(getProject(), new BindingTraceContext()); JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver(); diff --git a/compiler/tests/org/jetbrains/jet/types/JetTypeCheckerTest.java b/compiler/tests/org/jetbrains/jet/types/JetTypeCheckerTest.java index 45d37fd85d5..86b43bdedda 100644 --- a/compiler/tests/org/jetbrains/jet/types/JetTypeCheckerTest.java +++ b/compiler/tests/org/jetbrains/jet/types/JetTypeCheckerTest.java @@ -34,6 +34,7 @@ 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; @@ -576,7 +577,7 @@ public class JetTypeCheckerTest extends JetLiteFixture { getEnvironment() ); - PackageFragmentDescriptor testData = moduleDescriptor.getPackageFragmentProvider().getPackageFragments(new FqName("testData")).get(0); // TODO 2 hack + PackageFragmentDescriptor testData = DescriptorUtils.getExactlyOnePackageFragment(moduleDescriptor, new FqName("testData")); return addImports(testData.getMemberScope()); } 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 b300ade1ff7..43b1e8a861b 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java @@ -21,6 +21,7 @@ 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.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.descriptors.impl.AnonymousFunctionDescriptor; @@ -484,4 +485,12 @@ 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/generators/src/org/jetbrains/jet/generators/builtins/BuiltInsSerializer.java b/generators/src/org/jetbrains/jet/generators/builtins/BuiltInsSerializer.java index 9547de99edf..0aa0374c892 100644 --- a/generators/src/org/jetbrains/jet/generators/builtins/BuiltInsSerializer.java +++ b/generators/src/org/jetbrains/jet/generators/builtins/BuiltInsSerializer.java @@ -26,7 +26,10 @@ 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.*; +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.psi.JetFile; import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestUtil; @@ -65,12 +68,9 @@ public class BuiltInsSerializer { List files = JetTestUtils.loadToJetFiles(environment, sourceFiles); ModuleDescriptor module = LazyResolveTestUtil.resolveLazily(files, environment, false); - - 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(fragmentDescriptor); + PackageFragmentDescriptor packageFragment = DescriptorUtils.getExactlyOnePackageFragment( + module, KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME); + DescriptorValidator.validate(packageFragment); if (!FileUtil.delete(destDir)) { System.err.println("Could not delete: " + destDir); @@ -89,7 +89,7 @@ public class BuiltInsSerializer { }); final List classNames = new ArrayList(); - List allDescriptors = DescriptorSerializer.sort(fragmentDescriptor.getMemberScope().getAllDescriptors()); + List allDescriptors = DescriptorSerializer.sort(packageFragment.getMemberScope().getAllDescriptors()); ClassSerializationUtil.serializeClasses(allDescriptors, serializer, new ClassSerializationUtil.Sink() { @Override public void writeClass(@NotNull ClassDescriptor classDescriptor, @NotNull ProtoBuf.Class classProto) { @@ -110,16 +110,16 @@ public class BuiltInsSerializer { ByteArrayOutputStream classNamesStream = new ByteArrayOutputStream(); writeClassNames(serializer, classNames, classNamesStream); - write(destDir, BuiltInsSerializationUtil.getClassNamesFilePath(fragmentDescriptor), classNamesStream, out); + write(destDir, BuiltInsSerializationUtil.getClassNamesFilePath(packageFragment), classNamesStream, out); ByteArrayOutputStream packageStream = new ByteArrayOutputStream(); - ProtoBuf.Package packageProto = serializer.packageProto(Collections.singleton(fragmentDescriptor)).build(); + ProtoBuf.Package packageProto = serializer.packageProto(Collections.singleton(packageFragment)).build(); packageProto.writeTo(packageStream); - write(destDir, BuiltInsSerializationUtil.getPackageFilePath(fragmentDescriptor), packageStream, out); + write(destDir, BuiltInsSerializationUtil.getPackageFilePath(packageFragment), packageStream, out); ByteArrayOutputStream nameStream = new ByteArrayOutputStream(); NameSerializationUtil.serializeNameTable(nameStream, serializer.getNameTable()); - write(destDir, BuiltInsSerializationUtil.getNameTableFilePath(fragmentDescriptor), nameStream, out); + write(destDir, BuiltInsSerializationUtil.getNameTableFilePath(packageFragment), nameStream, out); if (out != null) { out.println("Total bytes written: " + totalSize + " to " + totalFiles + " files");