Extracted method for finding exactly one fragment.
This commit is contained in:
+3
-3
@@ -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();
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
@@ -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<PackageFragmentDescriptor> packageFragments = module.getPackageFragmentProvider().getPackageFragments(fqName);
|
||||
assert packageFragments.size() == 1 : "Exactly one package fragment expected: " + packageFragments;
|
||||
return packageFragments.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<JetFile> 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<Name> classNames = new ArrayList<Name>();
|
||||
List<DeclarationDescriptor> allDescriptors = DescriptorSerializer.sort(fragmentDescriptor.getMemberScope().getAllDescriptors());
|
||||
List<DeclarationDescriptor> 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");
|
||||
|
||||
Reference in New Issue
Block a user