Fine. Move InstanceItemMemberItem.writeKind() into separate method.
Sometimes we know the exact kind, so don't need writing it.
Change-Id: Iaa0573aa6af722ae64f272b6327cd9985e5a6ec7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/424260
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/fine/manifest_item.dart b/pkg/analyzer/lib/src/fine/manifest_item.dart
index 17bc66f..17b3572 100644
--- a/pkg/analyzer/lib/src/fine/manifest_item.dart
+++ b/pkg/analyzer/lib/src/fine/manifest_item.dart
@@ -102,7 +102,7 @@
sink.writeMap(
declaredMembers,
writeKey: (name) => name.write(sink),
- writeValue: (member) => member.write(sink),
+ writeValue: (member) => member.writeWithKind(sink),
);
}
@@ -158,9 +158,8 @@
}
@override
- void write(BufferedSink sink) {
- sink.writeEnum(_ManifestItemKind2.instanceDuplicate);
- super.write(sink);
+ void writeKind(BufferedSink sink) {
+ sink.writeEnum(_InstanceItemMemberItemKind.duplicate);
}
}
@@ -212,11 +211,15 @@
@override
void write(BufferedSink sink) {
- sink.writeEnum(_ManifestItemKind2.instanceGetter);
super.write(sink);
returnType.write(sink);
constInitializer.writeOptional(sink);
}
+
+ @override
+ void writeKind(BufferedSink sink) {
+ sink.writeEnum(_InstanceItemMemberItemKind.getter);
+ }
}
sealed class InstanceItemMemberItem<E extends ExecutableElementImpl2>
@@ -240,20 +243,27 @@
sink.writeBool(isStatic);
}
+ void writeKind(BufferedSink sink);
+
+ void writeWithKind(BufferedSink sink) {
+ writeKind(sink);
+ write(sink);
+ }
+
static InstanceItemMemberItem<ExecutableElementImpl2> read(
SummaryDataReader reader,
) {
- var kind = reader.readEnum(_ManifestItemKind2.values);
+ var kind = reader.readEnum(_InstanceItemMemberItemKind.values);
switch (kind) {
- case _ManifestItemKind2.instanceDuplicate:
+ case _InstanceItemMemberItemKind.duplicate:
return InstanceItemDuplicateItem.read(reader);
- case _ManifestItemKind2.instanceGetter:
+ case _InstanceItemMemberItemKind.getter:
return InstanceItemGetterItem.read(reader);
- case _ManifestItemKind2.instanceMethod:
+ case _InstanceItemMemberItemKind.method:
return InstanceItemMethodItem.read(reader);
- case _ManifestItemKind2.instanceSetter:
+ case _InstanceItemMemberItemKind.setter:
return InstanceItemSetterItem.read(reader);
- case _ManifestItemKind2.interfaceConstructor:
+ case _InstanceItemMemberItemKind.constructor:
return InterfaceItemConstructorItem.read(reader);
}
}
@@ -300,10 +310,14 @@
@override
void write(BufferedSink sink) {
- sink.writeEnum(_ManifestItemKind2.instanceMethod);
super.write(sink);
functionType.writeNoTag(sink);
}
+
+ @override
+ void writeKind(BufferedSink sink) {
+ sink.writeEnum(_InstanceItemMemberItemKind.method);
+ }
}
class InstanceItemSetterItem extends InstanceItemMemberItem<SetterElementImpl> {
@@ -349,10 +363,14 @@
@override
void write(BufferedSink sink) {
- sink.writeEnum(_ManifestItemKind2.instanceSetter);
super.write(sink);
valueType.write(sink);
}
+
+ @override
+ void writeKind(BufferedSink sink) {
+ sink.writeEnum(_InstanceItemMemberItemKind.setter);
+ }
}
/// The item for [InterfaceElementImpl2].
@@ -482,13 +500,17 @@
@override
void write(BufferedSink sink) {
- sink.writeEnum(_ManifestItemKind2.interfaceConstructor);
super.write(sink);
sink.writeBool(isConst);
sink.writeBool(isFactory);
functionType.writeNoTag(sink);
constantInitializers.writeList(sink);
}
+
+ @override
+ void writeKind(BufferedSink sink) {
+ sink.writeEnum(_InstanceItemMemberItemKind.constructor);
+ }
}
class ManifestAnnotation {
@@ -811,6 +833,14 @@
}
}
+enum _InstanceItemMemberItemKind {
+ duplicate,
+ constructor,
+ method,
+ getter,
+ setter,
+}
+
enum _ManifestItemKind {
class_,
mixin_,
@@ -819,14 +849,6 @@
topLevelSetter,
}
-enum _ManifestItemKind2 {
- instanceDuplicate,
- instanceGetter,
- instanceMethod,
- instanceSetter,
- interfaceConstructor,
-}
-
extension _AnnotatableElementExtension on AnnotatableElementImpl {
MetadataImpl get effectiveMetadata {
if (this case PropertyAccessorElementImpl2 accessor) {