@Nullable @Override protected ClassData getClassData(@NotNull ClassId classId) { InputStream stream = getStreamNullable(BuiltInsSerializationUtil.getClassMetadataPath(classId)); if (stream == null) { return null; } try { ProtoBuf.Class classProto = ProtoBuf.Class.parseFrom(stream); Name expectedShortName = classId.getRelativeClassName().shortName(); Name actualShortName = nameResolver.getClassId(classProto.getFqName()).getRelativeClassName().shortName(); if (!actualShortName.isSpecial() && !actualShortName.equals(expectedShortName)) { // Workaround for case-insensitive file systems, // otherwise we'd find "Collection" for "collection" etc return null; } return new ClassData(nameResolver, classProto); } catch (IOException e) { throw new IllegalStateException(e); } }
@NotNull private ProtoBuf.Package loadPackage() { String packageFilePath = BuiltInsSerializationUtil.getPackageFilePath(getFqName()); InputStream stream = getStream(packageFilePath); try { return ProtoBuf.Package.parseFrom(stream); } catch (IOException e) { throw new IllegalStateException(e); } }
public BuiltinsPackageFragment( @NotNull StorageManager storageManager, @NotNull ModuleDescriptor module) { super(module, KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME); nameResolver = NameSerializationUtil.deserializeNameResolver( getStream(BuiltInsSerializationUtil.getNameTableFilePath(getFqName()))); packageFragmentProvider = new BuiltinsPackageFragmentProvider(); // TODO: support annotations members = new DeserializedPackageMemberScope( storageManager, this, Deserializers.UNSUPPORTED, MemberFilter.ALWAYS_TRUE, new BuiltInsDescriptorFinder(storageManager), loadPackage(), nameResolver); }