From 78c88d985b84fc586d39a06e0845bdfeb822de11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20A=C4=9Facan?= Date: Wed, 7 May 2025 14:58:31 +0100 Subject: [PATCH 1/4] Remove closure calls when mapping enum nums to vals --- protobuf/lib/src/protobuf/builder_info.dart | 55 +++++++++---- protobuf/lib/src/protobuf/extension.dart | 8 +- protobuf/lib/src/protobuf/field_info.dart | 17 +++- protobuf/test/dummy_field_test.dart | 2 +- protobuf/test/mock_util.dart | 2 + protoc_plugin/lib/src/enum_generator.dart | 4 +- .../lib/src/extension_generator.dart | 2 + .../lib/src/generated/dart_options.pb.dart | 6 +- .../lib/src/generated/descriptor.pb.dart | 82 ++++++++++--------- .../lib/src/generated/descriptor.pbenum.dart | 64 ++++++++++----- .../lib/src/generated/plugin.pb.dart | 10 ++- .../lib/src/generated/plugin.pbenum.dart | 9 +- protoc_plugin/lib/src/protobuf_field.dart | 3 + .../test/goldens/deprecations.pbenum | 4 +- .../test/goldens/doc_comments.pbenum | 4 +- protoc_plugin/test/goldens/enum | 4 +- protoc_plugin/test/goldens/messageGenerator | 2 +- .../test/goldens/messageGenerator.meta | 64 +++++++-------- .../test/goldens/messageGeneratorEnums | 4 +- .../test/goldens/topLevelEnum.pbenum | 4 +- 20 files changed, 212 insertions(+), 138 deletions(-) diff --git a/protobuf/lib/src/protobuf/builder_info.dart b/protobuf/lib/src/protobuf/builder_info.dart index 1ae344133..1856b77dc 100644 --- a/protobuf/lib/src/protobuf/builder_info.dart +++ b/protobuf/lib/src/protobuf/builder_info.dart @@ -62,6 +62,7 @@ class BuilderInfo { dynamic defaultOrMaker, CreateBuilderFunc? subBuilder, ValueOfFunc? valueOf, + Map? valueOfMap, List? enumValues, {String? protoName}) { final index = byIndex.length; @@ -71,6 +72,7 @@ class BuilderInfo { defaultOrMaker: defaultOrMaker, subBuilder: subBuilder, valueOf: valueOf, + valueOfMap: valueOfMap, enumValues: enumValues, protoName: protoName); _addField(fieldInfo); @@ -98,6 +100,7 @@ class BuilderInfo { CheckFunc check, CreateBuilderFunc? subBuilder, ValueOfFunc? valueOf, + Map? valueOfMap, List? enumValues, {ProtobufEnum? defaultEnumValue, String? protoName}) { @@ -105,6 +108,7 @@ class BuilderInfo { _addField(FieldInfo.repeated( name, tagNumber, index, fieldType, check, subBuilder, valueOf: valueOf, + valueOfMap: valueOfMap, enumValues: enumValues, defaultEnumValue: defaultEnumValue, protoName: protoName)); @@ -127,42 +131,44 @@ class BuilderInfo { {dynamic defaultOrMaker, CreateBuilderFunc? subBuilder, ValueOfFunc? valueOf, + Map? valueOfMap, List? enumValues, String? protoName}) { add(tagNumber, name, fieldType, defaultOrMaker, subBuilder, valueOf, - enumValues, + valueOfMap, enumValues, protoName: protoName); } /// Adds PbFieldType.OS String with no default value to reduce generated /// code size. void aOS(int tagNumber, String name, {String? protoName}) { - add(tagNumber, name, PbFieldType.OS, null, null, null, null, + add(tagNumber, name, PbFieldType.OS, null, null, null, null, null, protoName: protoName); } /// Adds PbFieldType.PS String with no default value. void pPS(int tagNumber, String name, {String? protoName}) { addRepeated(tagNumber, name, PbFieldType.PS, - getCheckFunction(PbFieldType.PS), null, null, null, + getCheckFunction(PbFieldType.PS), null, null, null, null, protoName: protoName); } /// Adds PbFieldType.QS String with no default value. void aQS(int tagNumber, String name, {String? protoName}) { - add(tagNumber, name, PbFieldType.QS, null, null, null, null, + add(tagNumber, name, PbFieldType.QS, null, null, null, null, null, protoName: protoName); } /// Adds Int64 field with Int64.ZERO default. void aInt64(int tagNumber, String name, {String? protoName}) { - add(tagNumber, name, PbFieldType.O6, Int64.ZERO, null, null, null, + add( + tagNumber, name, PbFieldType.O6, Int64.ZERO, null, null, null, null, protoName: protoName); } /// Adds a boolean with no default value. void aOB(int tagNumber, String name, {String? protoName}) { - add(tagNumber, name, PbFieldType.OB, null, null, null, null, + add(tagNumber, name, PbFieldType.OB, null, null, null, null, null, protoName: protoName); } @@ -170,10 +176,11 @@ class BuilderInfo { void e(int tagNumber, String name, int fieldType, {dynamic defaultOrMaker, ValueOfFunc? valueOf, + Map? valueOfMap, List? enumValues, String? protoName}) { - add( - tagNumber, name, fieldType, defaultOrMaker, null, valueOf, enumValues, + add(tagNumber, name, fieldType, defaultOrMaker, null, valueOf, + valueOfMap, enumValues, protoName: protoName); } @@ -181,7 +188,7 @@ class BuilderInfo { void p(int tagNumber, String name, int fieldType, {String? protoName}) { assert(!_isGroupOrMessage(fieldType) && !_isEnum(fieldType)); addRepeated(tagNumber, name, fieldType, getCheckFunction(fieldType), - null, null, null, + null, null, null, null, protoName: protoName); } @@ -189,12 +196,13 @@ class BuilderInfo { void pc(int tagNumber, String name, int fieldType, {CreateBuilderFunc? subBuilder, ValueOfFunc? valueOf, + Map? valueOfMap, List? enumValues, ProtobufEnum? defaultEnumValue, String? protoName}) { assert(_isGroupOrMessage(fieldType) || _isEnum(fieldType)); addRepeated(tagNumber, name, fieldType, _checkNotNull, subBuilder, - valueOf, enumValues, + valueOf, valueOfMap, enumValues, defaultEnumValue: defaultEnumValue, protoName: protoName); } @@ -208,6 +216,7 @@ class BuilderInfo { subBuilder, null, null, + null, protoName: protoName); } @@ -221,6 +230,7 @@ class BuilderInfo { subBuilder, null, null, + null, protoName: protoName); } @@ -238,16 +248,25 @@ class BuilderInfo { required int valueFieldType, CreateBuilderFunc? valueCreator, ValueOfFunc? valueOf, + Map? valueOfMap, List? enumValues, ProtobufEnum? defaultEnumValue, PackageName packageName = const PackageName(''), String? protoName, dynamic valueDefaultOrMaker}) { - final mapEntryBuilderInfo = BuilderInfo(entryClassName, - package: packageName) - ..add(PbMap._keyFieldNumber, 'key', keyFieldType, null, null, null, null) - ..add(PbMap._valueFieldNumber, 'value', valueFieldType, - valueDefaultOrMaker, valueCreator, valueOf, enumValues); + final mapEntryBuilderInfo = + BuilderInfo(entryClassName, package: packageName) + ..add(PbMap._keyFieldNumber, 'key', keyFieldType, null, null, null, + null, null) + ..add( + PbMap._valueFieldNumber, + 'value', + valueFieldType, + valueDefaultOrMaker, + valueCreator, + valueOf, + valueOfMap, + enumValues); addMapField(tagNumber, name, keyFieldType, valueFieldType, mapEntryBuilderInfo, valueCreator, @@ -323,9 +342,9 @@ class BuilderInfo { ProtobufEnum? _decodeEnum( int tagNumber, ExtensionRegistry? registry, int rawValue) { - final f = valueOfFunc(tagNumber); - if (f != null) { - return f(rawValue); + final valueMap = fieldInfo[tagNumber]?.valueOfMap; + if (valueMap != null) { + return valueMap[rawValue]; } return registry ?.getExtension(qualifiedMessageName, tagNumber) diff --git a/protobuf/lib/src/protobuf/extension.dart b/protobuf/lib/src/protobuf/extension.dart index 1144443fc..3c7228154 100644 --- a/protobuf/lib/src/protobuf/extension.dart +++ b/protobuf/lib/src/protobuf/extension.dart @@ -12,12 +12,14 @@ class Extension extends FieldInfo { {dynamic defaultOrMaker, CreateBuilderFunc? subBuilder, ValueOfFunc? valueOf, + Map? valueOfMap, List? enumValues, String? protoName}) : super(name, tagNumber, null, fieldType, defaultOrMaker: defaultOrMaker, subBuilder: subBuilder, valueOf: valueOf, + valueOfMap: valueOfMap, enumValues: enumValues, protoName: protoName); @@ -25,10 +27,14 @@ class Extension extends FieldInfo { {required CheckFunc check, CreateBuilderFunc? subBuilder, ValueOfFunc? valueOf, + Map? valueOfMap, List? enumValues, String? protoName}) : super.repeated(name, tagNumber, null, fieldType, check, subBuilder, - valueOf: valueOf, enumValues: enumValues, protoName: protoName); + valueOf: valueOf, + valueOfMap: valueOfMap, + enumValues: enumValues, + protoName: protoName); @override int get hashCode => extendee.hashCode * 31 + tagNumber; diff --git a/protobuf/lib/src/protobuf/field_info.dart b/protobuf/lib/src/protobuf/field_info.dart index 1777e0909..d7619cfea 100644 --- a/protobuf/lib/src/protobuf/field_info.dart +++ b/protobuf/lib/src/protobuf/field_info.dart @@ -93,6 +93,8 @@ class FieldInfo { /// Only available in enum fields. final ValueOfFunc? valueOf; + final Map? valueOfMap; + /// Function to verify items when adding to a repeated field. /// /// Only available in repeated fields. @@ -102,6 +104,7 @@ class FieldInfo { {dynamic defaultOrMaker, this.subBuilder, this.valueOf, + this.valueOfMap, this.enumValues, this.defaultEnumValue, String? protoName}) @@ -112,7 +115,8 @@ class FieldInfo { assert(!_isGroupOrMessage(type) || subBuilder != null || _isMapField(type)), - assert(!_isEnum(type) || valueOf != null); + assert(!_isEnum(type) || (valueOf != null && valueOfMap != null), + 'isEnum = ${_isEnum(type)}, valueOf = $valueOf, valueOfMap = $valueOfMap'); // Represents a field that has been removed by a program transformation. FieldInfo.dummy(this.index) @@ -122,6 +126,7 @@ class FieldInfo { type = 0, makeDefault = null, valueOf = null, + valueOfMap = null, check = null, enumValues = null, defaultEnumValue = null, @@ -129,11 +134,15 @@ class FieldInfo { FieldInfo.repeated(this.name, this.tagNumber, this.index, this.type, CheckFunc this.check, this.subBuilder, - {this.valueOf, this.enumValues, this.defaultEnumValue, String? protoName}) + {this.valueOf, + this.valueOfMap, + this.enumValues, + this.defaultEnumValue, + String? protoName}) : makeDefault = (() => PbList(check: check)), _protoName = protoName, assert(_isRepeated(type)), - assert(!_isEnum(type) || valueOf != null); + assert(!_isEnum(type) || (valueOf != null && valueOfMap != null)); static MakeDefaultFunc? findMakeDefault(int type, dynamic defaultOrMaker) { if (defaultOrMaker == null) return PbFieldType._defaultForType(type); @@ -277,7 +286,7 @@ class MapFieldInfo extends FieldInfo?> { defaultOrMaker: () => PbMap(keyFieldType, valueFieldType), defaultEnumValue: defaultEnumValue, protoName: protoName) { - assert(!_isEnum(type) || valueOf != null); + assert(!_isEnum(type) || (valueOf != null && valueOfMap != null)); } FieldInfo get valueFieldInfo => diff --git a/protobuf/test/dummy_field_test.dart b/protobuf/test/dummy_field_test.dart index 7867c8569..16da24246 100644 --- a/protobuf/test/dummy_field_test.dart +++ b/protobuf/test/dummy_field_test.dart @@ -9,7 +9,7 @@ class Message extends GeneratedMessage { @override BuilderInfo get info_ => _i; static final _i = BuilderInfo('Message') - ..add(0, 'dummy', null, null, null, null, null); + ..add(0, 'dummy', null, null, null, null, null, null); @override Message createEmptyInstance() => Message(); diff --git a/protobuf/test/mock_util.dart b/protobuf/test/mock_util.dart index 731763547..3b7d0d414 100644 --- a/protobuf/test/mock_util.dart +++ b/protobuf/test/mock_util.dart @@ -24,6 +24,8 @@ BuilderInfo mockInfo(String className, CreateBuilderFunc create) { ..e(7, 'enm', PbFieldType.OE, defaultOrMaker: mockEnumValues.first, valueOf: (i) => mockEnumValues.firstWhereOrNull((e) => e.value == i), + valueOfMap: + Map.fromEntries(mockEnumValues.map((e) => MapEntry(e.value, e))), enumValues: mockEnumValues); } diff --git a/protoc_plugin/lib/src/enum_generator.dart b/protoc_plugin/lib/src/enum_generator.dart index a1cd8b5f7..075f32179 100644 --- a/protoc_plugin/lib/src/enum_generator.dart +++ b/protoc_plugin/lib/src/enum_generator.dart @@ -176,10 +176,10 @@ class EnumGenerator extends ProtobufContainer { out.println(); out.println( - 'static final $coreImportPrefix.Map<$coreImportPrefix.int, $classname> _byValue =' + 'static final $coreImportPrefix.Map<$coreImportPrefix.int, $classname> byValue =' ' $protobufImportPrefix.ProtobufEnum.initByValue(values);'); out.println('static $classname? valueOf($coreImportPrefix.int value) =>' - ' _byValue[value];'); + ' byValue[value];'); out.println(); out.println('const $classname._(super.v, super.n);'); diff --git a/protoc_plugin/lib/src/extension_generator.dart b/protoc_plugin/lib/src/extension_generator.dart index f9eef30f5..4bba97550 100644 --- a/protoc_plugin/lib/src/extension_generator.dart +++ b/protoc_plugin/lib/src/extension_generator.dart @@ -120,6 +120,7 @@ class ExtensionGenerator { named['subBuilder'] = '$dartType.create'; } else if (type.isEnum) { named['valueOf'] = '$dartType.valueOf'; + named['valueOfMap'] = '$dartType.byValue'; named['enumValues'] = '$dartType.values'; } } else { @@ -130,6 +131,7 @@ class ExtensionGenerator { } else if (type.isEnum) { final dartEnum = type.getDartType(fileGen!); named['valueOf'] = '$dartEnum.valueOf'; + named['valueOfMap'] = '$dartEnum.byValue'; named['enumValues'] = '$dartEnum.values'; } } diff --git a/protoc_plugin/lib/src/generated/dart_options.pb.dart b/protoc_plugin/lib/src/generated/dart_options.pb.dart index f045820bd..340247fca 100644 --- a/protoc_plugin/lib/src/generated/dart_options.pb.dart +++ b/protoc_plugin/lib/src/generated/dart_options.pb.dart @@ -2,7 +2,7 @@ // Generated code. Do not modify. // source: dart_options.proto // -// @dart = 2.12 +// @dart = 3.3 // ignore_for_file: annotate_overrides, camel_case_types, comment_references // ignore_for_file: constant_identifier_names, library_prefixes @@ -13,6 +13,8 @@ import 'dart:core' as $core; import 'package:protobuf/protobuf.dart' as $pb; +export 'package:protobuf/protobuf.dart' show GeneratedMessageGenericExtensions; + /// A mixin that can be used in the 'with' clause of the generated Dart class /// for a proto message. class DartMixin extends $pb.GeneratedMessage { @@ -171,7 +173,7 @@ class Imports extends $pb.GeneratedMessage { /// so the generated code may contain errors. Therefore, running dartanalyzer /// on the generated file is a good idea. @$pb.TagNumber(1) - $core.List get mixins => $_getList(0); + $pb.PbList get mixins => $_getList(0); } class Dart_options { diff --git a/protoc_plugin/lib/src/generated/descriptor.pb.dart b/protoc_plugin/lib/src/generated/descriptor.pb.dart index d367d33e5..e8c814e99 100644 --- a/protoc_plugin/lib/src/generated/descriptor.pb.dart +++ b/protoc_plugin/lib/src/generated/descriptor.pb.dart @@ -2,7 +2,7 @@ // Generated code. Do not modify. // source: descriptor.proto // -// @dart = 2.12 +// @dart = 3.3 // ignore_for_file: annotate_overrides, camel_case_types, comment_references // ignore_for_file: constant_identifier_names, library_prefixes @@ -16,6 +16,8 @@ import 'package:protobuf/protobuf.dart' as $pb; import 'descriptor.pbenum.dart'; +export 'package:protobuf/protobuf.dart' show GeneratedMessageGenericExtensions; + export 'descriptor.pbenum.dart'; /// The protocol compiler can output a FileDescriptorSet containing the .proto @@ -71,7 +73,7 @@ class FileDescriptorSet extends $pb.GeneratedMessage { static FileDescriptorSet? _defaultInstance; @$pb.TagNumber(1) - $core.List get file => $_getList(0); + $pb.PbList get file => $_getList(0); } /// Describes a complete .proto file. @@ -216,20 +218,20 @@ class FileDescriptorProto extends $pb.GeneratedMessage { /// Names of files imported by this file. @$pb.TagNumber(3) - $core.List<$core.String> get dependency => $_getList(2); + $pb.PbList<$core.String> get dependency => $_getList(2); /// All top-level definitions in this file. @$pb.TagNumber(4) - $core.List get messageType => $_getList(3); + $pb.PbList get messageType => $_getList(3); @$pb.TagNumber(5) - $core.List get enumType => $_getList(4); + $pb.PbList get enumType => $_getList(4); @$pb.TagNumber(6) - $core.List get service => $_getList(5); + $pb.PbList get service => $_getList(5); @$pb.TagNumber(7) - $core.List get extension => $_getList(6); + $pb.PbList get extension => $_getList(6); @$pb.TagNumber(8) FileOptions get options => $_getN(7); @@ -265,12 +267,12 @@ class FileDescriptorProto extends $pb.GeneratedMessage { /// Indexes of the public imported files in the dependency list above. @$pb.TagNumber(10) - $core.List<$core.int> get publicDependency => $_getList(9); + $pb.PbList<$core.int> get publicDependency => $_getList(9); /// Indexes of the weak imported files in the dependency list. /// For Google-internal migration only. Do not use. @$pb.TagNumber(11) - $core.List<$core.int> get weakDependency => $_getList(10); + $pb.PbList<$core.int> get weakDependency => $_getList(10); /// The syntax of the proto file. /// The supported values are "proto2" and "proto3". @@ -597,19 +599,19 @@ class DescriptorProto extends $pb.GeneratedMessage { void clearName() => $_clearField(1); @$pb.TagNumber(2) - $core.List get field => $_getList(1); + $pb.PbList get field => $_getList(1); @$pb.TagNumber(3) - $core.List get nestedType => $_getList(2); + $pb.PbList get nestedType => $_getList(2); @$pb.TagNumber(4) - $core.List get enumType => $_getList(3); + $pb.PbList get enumType => $_getList(3); @$pb.TagNumber(5) - $core.List get extensionRange => $_getList(4); + $pb.PbList get extensionRange => $_getList(4); @$pb.TagNumber(6) - $core.List get extension => $_getList(5); + $pb.PbList get extension => $_getList(5); @$pb.TagNumber(7) MessageOptions get options => $_getN(6); @@ -626,15 +628,15 @@ class DescriptorProto extends $pb.GeneratedMessage { MessageOptions ensureOptions() => $_ensure(6); @$pb.TagNumber(8) - $core.List get oneofDecl => $_getList(7); + $pb.PbList get oneofDecl => $_getList(7); @$pb.TagNumber(9) - $core.List get reservedRange => $_getList(8); + $pb.PbList get reservedRange => $_getList(8); /// Reserved field names, which may not be used by fields in the same message. /// A given name may only be reserved once. @$pb.TagNumber(10) - $core.List<$core.String> get reservedName => $_getList(9); + $pb.PbList<$core.String> get reservedName => $_getList(9); } class ExtensionRangeOptions extends $pb.GeneratedMessage { @@ -692,7 +694,7 @@ class ExtensionRangeOptions extends $pb.GeneratedMessage { /// The parser stores options it doesn't recognize here. See above. @$pb.TagNumber(999) - $core.List get uninterpretedOption => $_getList(0); + $pb.PbList get uninterpretedOption => $_getList(0); } /// Describes a field within a message. @@ -766,11 +768,13 @@ class FieldDescriptorProto extends $pb.GeneratedMessage { 4, _omitFieldNames ? '' : 'label', $pb.PbFieldType.OE, defaultOrMaker: FieldDescriptorProto_Label.LABEL_OPTIONAL, valueOf: FieldDescriptorProto_Label.valueOf, + valueOfMap: FieldDescriptorProto_Label.byValue, enumValues: FieldDescriptorProto_Label.values) ..e( 5, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: FieldDescriptorProto_Type.TYPE_DOUBLE, valueOf: FieldDescriptorProto_Type.valueOf, + valueOfMap: FieldDescriptorProto_Type.byValue, enumValues: FieldDescriptorProto_Type.values) ..aOS(6, _omitFieldNames ? '' : 'typeName') ..aOS(7, _omitFieldNames ? '' : 'defaultValue') @@ -1241,7 +1245,7 @@ class EnumDescriptorProto extends $pb.GeneratedMessage { void clearName() => $_clearField(1); @$pb.TagNumber(2) - $core.List get value => $_getList(1); + $pb.PbList get value => $_getList(1); @$pb.TagNumber(3) EnumOptions get options => $_getN(2); @@ -1261,13 +1265,13 @@ class EnumDescriptorProto extends $pb.GeneratedMessage { /// by enum values in the same enum declaration. Reserved ranges may not /// overlap. @$pb.TagNumber(4) - $core.List get reservedRange => + $pb.PbList get reservedRange => $_getList(3); /// Reserved enum value names, which may not be reused. A given name may only /// be reserved once. @$pb.TagNumber(5) - $core.List<$core.String> get reservedName => $_getList(4); + $pb.PbList<$core.String> get reservedName => $_getList(4); } /// Describes a value within an enum. @@ -1448,7 +1452,7 @@ class ServiceDescriptorProto extends $pb.GeneratedMessage { void clearName() => $_clearField(1); @$pb.TagNumber(2) - $core.List get method => $_getList(1); + $pb.PbList get method => $_getList(1); @$pb.TagNumber(3) ServiceOptions get options => $_getN(2); @@ -1732,6 +1736,7 @@ class FileOptions extends $pb.GeneratedMessage { 9, _omitFieldNames ? '' : 'optimizeFor', $pb.PbFieldType.OE, defaultOrMaker: FileOptions_OptimizeMode.SPEED, valueOf: FileOptions_OptimizeMode.valueOf, + valueOfMap: FileOptions_OptimizeMode.byValue, enumValues: FileOptions_OptimizeMode.values) ..aOB(10, _omitFieldNames ? '' : 'javaMultipleFiles') ..aOS(11, _omitFieldNames ? '' : 'goPackage') @@ -2087,7 +2092,7 @@ class FileOptions extends $pb.GeneratedMessage { /// The parser stores options it doesn't recognize here. /// See the documentation for the "Options" section above. @$pb.TagNumber(999) - $core.List get uninterpretedOption => $_getList(20); + $pb.PbList get uninterpretedOption => $_getList(20); } class MessageOptions extends $pb.GeneratedMessage { @@ -2257,7 +2262,7 @@ class MessageOptions extends $pb.GeneratedMessage { /// The parser stores options it doesn't recognize here. See above. @$pb.TagNumber(999) - $core.List get uninterpretedOption => $_getList(4); + $pb.PbList get uninterpretedOption => $_getList(4); } class FieldOptions extends $pb.GeneratedMessage { @@ -2311,6 +2316,7 @@ class FieldOptions extends $pb.GeneratedMessage { 1, _omitFieldNames ? '' : 'ctype', $pb.PbFieldType.OE, defaultOrMaker: FieldOptions_CType.STRING, valueOf: FieldOptions_CType.valueOf, + valueOfMap: FieldOptions_CType.byValue, enumValues: FieldOptions_CType.values) ..aOB(2, _omitFieldNames ? '' : 'packed') ..aOB(3, _omitFieldNames ? '' : 'deprecated') @@ -2319,6 +2325,7 @@ class FieldOptions extends $pb.GeneratedMessage { 6, _omitFieldNames ? '' : 'jstype', $pb.PbFieldType.OE, defaultOrMaker: FieldOptions_JSType.JS_NORMAL, valueOf: FieldOptions_JSType.valueOf, + valueOfMap: FieldOptions_JSType.byValue, enumValues: FieldOptions_JSType.values) ..aOB(10, _omitFieldNames ? '' : 'weak') ..pc( @@ -2476,7 +2483,7 @@ class FieldOptions extends $pb.GeneratedMessage { /// The parser stores options it doesn't recognize here. See above. @$pb.TagNumber(999) - $core.List get uninterpretedOption => $_getList(6); + $pb.PbList get uninterpretedOption => $_getList(6); } class OneofOptions extends $pb.GeneratedMessage { @@ -2532,7 +2539,7 @@ class OneofOptions extends $pb.GeneratedMessage { /// The parser stores options it doesn't recognize here. See above. @$pb.TagNumber(999) - $core.List get uninterpretedOption => $_getList(0); + $pb.PbList get uninterpretedOption => $_getList(0); } class EnumOptions extends $pb.GeneratedMessage { @@ -2627,7 +2634,7 @@ class EnumOptions extends $pb.GeneratedMessage { /// The parser stores options it doesn't recognize here. See above. @$pb.TagNumber(999) - $core.List get uninterpretedOption => $_getList(2); + $pb.PbList get uninterpretedOption => $_getList(2); } class EnumValueOptions extends $pb.GeneratedMessage { @@ -2704,7 +2711,7 @@ class EnumValueOptions extends $pb.GeneratedMessage { /// The parser stores options it doesn't recognize here. See above. @$pb.TagNumber(999) - $core.List get uninterpretedOption => $_getList(1); + $pb.PbList get uninterpretedOption => $_getList(1); } class ServiceOptions extends $pb.GeneratedMessage { @@ -2781,7 +2788,7 @@ class ServiceOptions extends $pb.GeneratedMessage { /// The parser stores options it doesn't recognize here. See above. @$pb.TagNumber(999) - $core.List get uninterpretedOption => $_getList(1); + $pb.PbList get uninterpretedOption => $_getList(1); } class MethodOptions extends $pb.GeneratedMessage { @@ -2820,6 +2827,7 @@ class MethodOptions extends $pb.GeneratedMessage { 34, _omitFieldNames ? '' : 'idempotencyLevel', $pb.PbFieldType.OE, defaultOrMaker: MethodOptions_IdempotencyLevel.IDEMPOTENCY_UNKNOWN, valueOf: MethodOptions_IdempotencyLevel.valueOf, + valueOfMap: MethodOptions_IdempotencyLevel.byValue, enumValues: MethodOptions_IdempotencyLevel.values) ..pc( 999, _omitFieldNames ? '' : 'uninterpretedOption', $pb.PbFieldType.PM, @@ -2879,7 +2887,7 @@ class MethodOptions extends $pb.GeneratedMessage { /// The parser stores options it doesn't recognize here. See above. @$pb.TagNumber(999) - $core.List get uninterpretedOption => $_getList(2); + $pb.PbList get uninterpretedOption => $_getList(2); } /// The name of the uninterpreted option. Each string represents a segment in @@ -3061,7 +3069,7 @@ class UninterpretedOption extends $pb.GeneratedMessage { static UninterpretedOption? _defaultInstance; @$pb.TagNumber(2) - $core.List get name => $_getList(0); + $pb.PbList get name => $_getList(0); /// The value of the uninterpreted option, in whatever type the tokenizer /// identified it as during parsing. Exactly one of these should be set. @@ -3233,7 +3241,7 @@ class SourceCodeInfo_Location extends $pb.GeneratedMessage { /// this path refers to the whole field declaration (from the beginning /// of the label to the terminating semicolon). @$pb.TagNumber(1) - $core.List<$core.int> get path => $_getList(0); + $pb.PbList<$core.int> get path => $_getList(0); /// Always has exactly three or four elements: start line, start column, /// end line (optional, otherwise assumed same as start line), end column. @@ -3241,7 +3249,7 @@ class SourceCodeInfo_Location extends $pb.GeneratedMessage { /// and column numbers are zero-based -- typically you will want to add /// 1 to each before displaying to a user. @$pb.TagNumber(2) - $core.List<$core.int> get span => $_getList(1); + $pb.PbList<$core.int> get span => $_getList(1); /// If this SourceCodeInfo represents a complete declaration, these are any /// comments appearing before and after the declaration which appear to be @@ -3315,7 +3323,7 @@ class SourceCodeInfo_Location extends $pb.GeneratedMessage { void clearTrailingComments() => $_clearField(4); @$pb.TagNumber(6) - $core.List<$core.String> get leadingDetachedComments => $_getList(4); + $pb.PbList<$core.String> get leadingDetachedComments => $_getList(4); } /// Encapsulates information about the original source file from which a @@ -3415,7 +3423,7 @@ class SourceCodeInfo extends $pb.GeneratedMessage { /// ignore those that it doesn't understand, as more types of locations could /// be recorded in the future. @$pb.TagNumber(1) - $core.List get location => $_getList(0); + $pb.PbList get location => $_getList(0); } class GeneratedCodeInfo_Annotation extends $pb.GeneratedMessage { @@ -3489,7 +3497,7 @@ class GeneratedCodeInfo_Annotation extends $pb.GeneratedMessage { /// Identifies the element in the original source .proto file. This field /// is formatted the same as SourceCodeInfo.Location.path. @$pb.TagNumber(1) - $core.List<$core.int> get path => $_getList(0); + $pb.PbList<$core.int> get path => $_getList(0); /// Identifies the filesystem path to the original source .proto. @$pb.TagNumber(2) @@ -3591,7 +3599,7 @@ class GeneratedCodeInfo extends $pb.GeneratedMessage { /// An Annotation connects some span of text in generated code to an element /// of its generating .proto file. @$pb.TagNumber(1) - $core.List get annotation => $_getList(0); + $pb.PbList get annotation => $_getList(0); } const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); diff --git a/protoc_plugin/lib/src/generated/descriptor.pbenum.dart b/protoc_plugin/lib/src/generated/descriptor.pbenum.dart index 8b92c04a8..a6235b723 100644 --- a/protoc_plugin/lib/src/generated/descriptor.pbenum.dart +++ b/protoc_plugin/lib/src/generated/descriptor.pbenum.dart @@ -2,7 +2,7 @@ // Generated code. Do not modify. // source: descriptor.proto // -// @dart = 2.12 +// @dart = 3.3 // ignore_for_file: annotate_overrides, camel_case_types, comment_references // ignore_for_file: constant_identifier_names, library_prefixes @@ -14,14 +14,22 @@ import 'dart:core' as $core; import 'package:protobuf/protobuf.dart' as $pb; class FieldDescriptorProto_Type extends $pb.ProtobufEnum { + /// 0 is reserved for errors. + /// Order is weird for historical reasons. static const FieldDescriptorProto_Type TYPE_DOUBLE = FieldDescriptorProto_Type._(1, _omitEnumNames ? '' : 'TYPE_DOUBLE'); static const FieldDescriptorProto_Type TYPE_FLOAT = FieldDescriptorProto_Type._(2, _omitEnumNames ? '' : 'TYPE_FLOAT'); + + /// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if + /// negative values are likely. static const FieldDescriptorProto_Type TYPE_INT64 = FieldDescriptorProto_Type._(3, _omitEnumNames ? '' : 'TYPE_INT64'); static const FieldDescriptorProto_Type TYPE_UINT64 = FieldDescriptorProto_Type._(4, _omitEnumNames ? '' : 'TYPE_UINT64'); + + /// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if + /// negative values are likely. static const FieldDescriptorProto_Type TYPE_INT32 = FieldDescriptorProto_Type._(5, _omitEnumNames ? '' : 'TYPE_INT32'); static const FieldDescriptorProto_Type TYPE_FIXED64 = @@ -32,10 +40,17 @@ class FieldDescriptorProto_Type extends $pb.ProtobufEnum { FieldDescriptorProto_Type._(8, _omitEnumNames ? '' : 'TYPE_BOOL'); static const FieldDescriptorProto_Type TYPE_STRING = FieldDescriptorProto_Type._(9, _omitEnumNames ? '' : 'TYPE_STRING'); + + /// Tag-delimited aggregate. + /// Group type is deprecated and not supported in proto3. However, Proto3 + /// implementations should still be able to parse the group wire format and + /// treat group fields as unknown fields. static const FieldDescriptorProto_Type TYPE_GROUP = FieldDescriptorProto_Type._(10, _omitEnumNames ? '' : 'TYPE_GROUP'); static const FieldDescriptorProto_Type TYPE_MESSAGE = FieldDescriptorProto_Type._(11, _omitEnumNames ? '' : 'TYPE_MESSAGE'); + + /// New in version 2. static const FieldDescriptorProto_Type TYPE_BYTES = FieldDescriptorProto_Type._(12, _omitEnumNames ? '' : 'TYPE_BYTES'); static const FieldDescriptorProto_Type TYPE_UINT32 = @@ -73,14 +88,15 @@ class FieldDescriptorProto_Type extends $pb.ProtobufEnum { TYPE_SINT64, ]; - static final $core.Map<$core.int, FieldDescriptorProto_Type> _byValue = + static final $core.Map<$core.int, FieldDescriptorProto_Type> byValue = $pb.ProtobufEnum.initByValue(values); - static FieldDescriptorProto_Type? valueOf($core.int value) => _byValue[value]; + static FieldDescriptorProto_Type? valueOf($core.int value) => byValue[value]; - const FieldDescriptorProto_Type._($core.int v, $core.String n) : super(v, n); + const FieldDescriptorProto_Type._(super.v, super.n); } class FieldDescriptorProto_Label extends $pb.ProtobufEnum { + /// 0 is reserved for errors static const FieldDescriptorProto_Label LABEL_OPTIONAL = FieldDescriptorProto_Label._(1, _omitEnumNames ? '' : 'LABEL_OPTIONAL'); static const FieldDescriptorProto_Label LABEL_REQUIRED = @@ -95,18 +111,19 @@ class FieldDescriptorProto_Label extends $pb.ProtobufEnum { LABEL_REPEATED, ]; - static final $core.Map<$core.int, FieldDescriptorProto_Label> _byValue = + static final $core.Map<$core.int, FieldDescriptorProto_Label> byValue = $pb.ProtobufEnum.initByValue(values); - static FieldDescriptorProto_Label? valueOf($core.int value) => - _byValue[value]; + static FieldDescriptorProto_Label? valueOf($core.int value) => byValue[value]; - const FieldDescriptorProto_Label._($core.int v, $core.String n) : super(v, n); + const FieldDescriptorProto_Label._(super.v, super.n); } /// Generated classes can be optimized for speed or code size. class FileOptions_OptimizeMode extends $pb.ProtobufEnum { static const FileOptions_OptimizeMode SPEED = FileOptions_OptimizeMode._(1, _omitEnumNames ? '' : 'SPEED'); + + /// etc. static const FileOptions_OptimizeMode CODE_SIZE = FileOptions_OptimizeMode._(2, _omitEnumNames ? '' : 'CODE_SIZE'); static const FileOptions_OptimizeMode LITE_RUNTIME = @@ -119,14 +136,15 @@ class FileOptions_OptimizeMode extends $pb.ProtobufEnum { LITE_RUNTIME, ]; - static final $core.Map<$core.int, FileOptions_OptimizeMode> _byValue = + static final $core.Map<$core.int, FileOptions_OptimizeMode> byValue = $pb.ProtobufEnum.initByValue(values); - static FileOptions_OptimizeMode? valueOf($core.int value) => _byValue[value]; + static FileOptions_OptimizeMode? valueOf($core.int value) => byValue[value]; - const FileOptions_OptimizeMode._($core.int v, $core.String n) : super(v, n); + const FileOptions_OptimizeMode._(super.v, super.n); } class FieldOptions_CType extends $pb.ProtobufEnum { + /// Default mode. static const FieldOptions_CType STRING = FieldOptions_CType._(0, _omitEnumNames ? '' : 'STRING'); static const FieldOptions_CType CORD = @@ -140,18 +158,23 @@ class FieldOptions_CType extends $pb.ProtobufEnum { STRING_PIECE, ]; - static final $core.Map<$core.int, FieldOptions_CType> _byValue = + static final $core.Map<$core.int, FieldOptions_CType> byValue = $pb.ProtobufEnum.initByValue(values); - static FieldOptions_CType? valueOf($core.int value) => _byValue[value]; + static FieldOptions_CType? valueOf($core.int value) => byValue[value]; - const FieldOptions_CType._($core.int v, $core.String n) : super(v, n); + const FieldOptions_CType._(super.v, super.n); } class FieldOptions_JSType extends $pb.ProtobufEnum { + /// Use the default type. static const FieldOptions_JSType JS_NORMAL = FieldOptions_JSType._(0, _omitEnumNames ? '' : 'JS_NORMAL'); + + /// Use JavaScript strings. static const FieldOptions_JSType JS_STRING = FieldOptions_JSType._(1, _omitEnumNames ? '' : 'JS_STRING'); + + /// Use JavaScript numbers. static const FieldOptions_JSType JS_NUMBER = FieldOptions_JSType._(2, _omitEnumNames ? '' : 'JS_NUMBER'); @@ -161,11 +184,11 @@ class FieldOptions_JSType extends $pb.ProtobufEnum { JS_NUMBER, ]; - static final $core.Map<$core.int, FieldOptions_JSType> _byValue = + static final $core.Map<$core.int, FieldOptions_JSType> byValue = $pb.ProtobufEnum.initByValue(values); - static FieldOptions_JSType? valueOf($core.int value) => _byValue[value]; + static FieldOptions_JSType? valueOf($core.int value) => byValue[value]; - const FieldOptions_JSType._($core.int v, $core.String n) : super(v, n); + const FieldOptions_JSType._(super.v, super.n); } /// Is this method side-effect-free (or safe in HTTP parlance), or idempotent, @@ -188,13 +211,12 @@ class MethodOptions_IdempotencyLevel extends $pb.ProtobufEnum { IDEMPOTENT, ]; - static final $core.Map<$core.int, MethodOptions_IdempotencyLevel> _byValue = + static final $core.Map<$core.int, MethodOptions_IdempotencyLevel> byValue = $pb.ProtobufEnum.initByValue(values); static MethodOptions_IdempotencyLevel? valueOf($core.int value) => - _byValue[value]; + byValue[value]; - const MethodOptions_IdempotencyLevel._($core.int v, $core.String n) - : super(v, n); + const MethodOptions_IdempotencyLevel._(super.v, super.n); } const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/protoc_plugin/lib/src/generated/plugin.pb.dart b/protoc_plugin/lib/src/generated/plugin.pb.dart index bad241898..e50ab709e 100644 --- a/protoc_plugin/lib/src/generated/plugin.pb.dart +++ b/protoc_plugin/lib/src/generated/plugin.pb.dart @@ -2,7 +2,7 @@ // Generated code. Do not modify. // source: plugin.proto // -// @dart = 2.12 +// @dart = 3.3 // ignore_for_file: annotate_overrides, camel_case_types, comment_references // ignore_for_file: constant_identifier_names, library_prefixes @@ -16,6 +16,8 @@ import 'package:protobuf/protobuf.dart' as $pb; import 'descriptor.pb.dart' as $0; +export 'package:protobuf/protobuf.dart' show GeneratedMessageGenericExtensions; + export 'plugin.pbenum.dart'; /// The version number of protocol compiler. @@ -204,7 +206,7 @@ class CodeGeneratorRequest extends $pb.GeneratedMessage { /// code generator should generate code only for these files. Each file's /// descriptor will be included in proto_file, below. @$pb.TagNumber(1) - $core.List<$core.String> get fileToGenerate => $_getList(0); + $pb.PbList<$core.String> get fileToGenerate => $_getList(0); /// The generator parameter passed on the command-line. @$pb.TagNumber(2) @@ -249,7 +251,7 @@ class CodeGeneratorRequest extends $pb.GeneratedMessage { /// Type names of fields and extensions in the FileDescriptorProto are always /// fully qualified. @$pb.TagNumber(15) - $core.List<$0.FileDescriptorProto> get protoFile => $_getList(3); + $pb.PbList<$0.FileDescriptorProto> get protoFile => $_getList(3); } /// Represents a single generated file. @@ -525,7 +527,7 @@ class CodeGeneratorResponse extends $pb.GeneratedMessage { void clearSupportedFeatures() => $_clearField(2); @$pb.TagNumber(15) - $core.List get file => $_getList(2); + $pb.PbList get file => $_getList(2); } const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); diff --git a/protoc_plugin/lib/src/generated/plugin.pbenum.dart b/protoc_plugin/lib/src/generated/plugin.pbenum.dart index f3082012f..e9f3f3671 100644 --- a/protoc_plugin/lib/src/generated/plugin.pbenum.dart +++ b/protoc_plugin/lib/src/generated/plugin.pbenum.dart @@ -2,7 +2,7 @@ // Generated code. Do not modify. // source: plugin.proto // -// @dart = 2.12 +// @dart = 3.3 // ignore_for_file: annotate_overrides, camel_case_types, comment_references // ignore_for_file: constant_identifier_names, library_prefixes @@ -27,13 +27,12 @@ class CodeGeneratorResponse_Feature extends $pb.ProtobufEnum { FEATURE_PROTO3_OPTIONAL, ]; - static final $core.Map<$core.int, CodeGeneratorResponse_Feature> _byValue = + static final $core.Map<$core.int, CodeGeneratorResponse_Feature> byValue = $pb.ProtobufEnum.initByValue(values); static CodeGeneratorResponse_Feature? valueOf($core.int value) => - _byValue[value]; + byValue[value]; - const CodeGeneratorResponse_Feature._($core.int v, $core.String n) - : super(v, n); + const CodeGeneratorResponse_Feature._(super.v, super.n); } const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/protoc_plugin/lib/src/protobuf_field.dart b/protoc_plugin/lib/src/protobuf_field.dart index b4ca5d1d0..5b8b719ec 100644 --- a/protoc_plugin/lib/src/protobuf_field.dart +++ b/protoc_plugin/lib/src/protobuf_field.dart @@ -221,6 +221,7 @@ class ProtobufField { } if (value.baseType.isEnum) { named['valueOf'] = '$valueType.valueOf'; + named['valueOfMap'] = '$valueType.byValue'; named['enumValues'] = '$valueType.values'; named['valueDefaultOrMaker'] = value.generateDefaultFunction(); named['defaultEnumValue'] = value.generateDefaultFunction(); @@ -244,6 +245,7 @@ class ProtobufField { named['subBuilder'] = '$type.create'; } else if (baseType.isEnum) { named['valueOf'] = '$type.valueOf'; + named['valueOfMap'] = '$type.byValue'; named['enumValues'] = '$type.values'; named['defaultEnumValue'] = generateDefaultFunction(); } @@ -256,6 +258,7 @@ class ProtobufField { args.add(typeConstant); named['defaultOrMaker'] = makeDefault; named['valueOf'] = '$type.valueOf'; + named['valueOfMap'] = '$type.byValue'; named['enumValues'] = '$type.values'; invocation = 'e<$type>'; } else if (makeDefault == null) { diff --git a/protoc_plugin/test/goldens/deprecations.pbenum b/protoc_plugin/test/goldens/deprecations.pbenum index 30bc5d782..e25bf4021 100644 --- a/protoc_plugin/test/goldens/deprecations.pbenum +++ b/protoc_plugin/test/goldens/deprecations.pbenum @@ -24,9 +24,9 @@ class A extends $pb.ProtobufEnum { A2, ]; - static final $core.Map<$core.int, A> _byValue = + static final $core.Map<$core.int, A> byValue = $pb.ProtobufEnum.initByValue(values); - static A? valueOf($core.int value) => _byValue[value]; + static A? valueOf($core.int value) => byValue[value]; const A._(super.v, super.n); } diff --git a/protoc_plugin/test/goldens/doc_comments.pbenum b/protoc_plugin/test/goldens/doc_comments.pbenum index 7cde50e13..ffbc36801 100644 --- a/protoc_plugin/test/goldens/doc_comments.pbenum +++ b/protoc_plugin/test/goldens/doc_comments.pbenum @@ -26,9 +26,9 @@ class A extends $pb.ProtobufEnum { A2, ]; - static final $core.Map<$core.int, A> _byValue = + static final $core.Map<$core.int, A> byValue = $pb.ProtobufEnum.initByValue(values); - static A? valueOf($core.int value) => _byValue[value]; + static A? valueOf($core.int value) => byValue[value]; const A._(super.v, super.n); } diff --git a/protoc_plugin/test/goldens/enum b/protoc_plugin/test/goldens/enum index 812247ddf..59c2944b8 100644 --- a/protoc_plugin/test/goldens/enum +++ b/protoc_plugin/test/goldens/enum @@ -11,8 +11,8 @@ class PhoneType extends $pb.ProtobufEnum { WORK, ]; - static final $core.Map<$core.int, PhoneType> _byValue = $pb.ProtobufEnum.initByValue(values); - static PhoneType? valueOf($core.int value) => _byValue[value]; + static final $core.Map<$core.int, PhoneType> byValue = $pb.ProtobufEnum.initByValue(values); + static PhoneType? valueOf($core.int value) => byValue[value]; const PhoneType._(super.v, super.n); } diff --git a/protoc_plugin/test/goldens/messageGenerator b/protoc_plugin/test/goldens/messageGenerator index 5eab02036..a7faa2147 100644 --- a/protoc_plugin/test/goldens/messageGenerator +++ b/protoc_plugin/test/goldens/messageGenerator @@ -6,7 +6,7 @@ class PhoneNumber extends $pb.GeneratedMessage { static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'PhoneNumber', createEmptyInstance: create) ..aQS(1, _omitFieldNames ? '' : 'number') - ..e(2, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: PhoneNumber_PhoneType.MOBILE, valueOf: PhoneNumber_PhoneType.valueOf, enumValues: PhoneNumber_PhoneType.values) + ..e(2, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: PhoneNumber_PhoneType.MOBILE, valueOf: PhoneNumber_PhoneType.valueOf, valueOfMap: PhoneNumber_PhoneType.byValue, enumValues: PhoneNumber_PhoneType.values) ..a<$core.String>(3, _omitFieldNames ? '' : 'name', $pb.PbFieldType.OS, defaultOrMaker: '\$') ..aOS(4, _omitFieldNames ? '' : 'deprecatedField') ; diff --git a/protoc_plugin/test/goldens/messageGenerator.meta b/protoc_plugin/test/goldens/messageGenerator.meta index c398f6031..a1e481afc 100644 --- a/protoc_plugin/test/goldens/messageGenerator.meta +++ b/protoc_plugin/test/goldens/messageGenerator.meta @@ -18,8 +18,8 @@ annotation: { path: 2 path: 1 sourceFile: - begin: 2003 - end: 2009 + begin: 2046 + end: 2052 } annotation: { path: 4 @@ -27,8 +27,8 @@ annotation: { path: 2 path: 1 sourceFile: - begin: 2051 - end: 2057 + begin: 2094 + end: 2100 } annotation: { path: 4 @@ -36,8 +36,8 @@ annotation: { path: 2 path: 1 sourceFile: - begin: 2130 - end: 2139 + begin: 2173 + end: 2182 } annotation: { path: 4 @@ -45,8 +45,8 @@ annotation: { path: 2 path: 1 sourceFile: - begin: 2182 - end: 2193 + begin: 2225 + end: 2236 } annotation: { path: 4 @@ -54,8 +54,8 @@ annotation: { path: 2 path: 0 sourceFile: - begin: 2265 - end: 2269 + begin: 2308 + end: 2312 } annotation: { path: 4 @@ -63,8 +63,8 @@ annotation: { path: 2 path: 0 sourceFile: - begin: 2310 - end: 2314 + begin: 2353 + end: 2357 } annotation: { path: 4 @@ -72,8 +72,8 @@ annotation: { path: 2 path: 0 sourceFile: - begin: 2395 - end: 2402 + begin: 2438 + end: 2445 } annotation: { path: 4 @@ -81,8 +81,8 @@ annotation: { path: 2 path: 0 sourceFile: - begin: 2445 - end: 2454 + begin: 2488 + end: 2497 } annotation: { path: 4 @@ -90,8 +90,8 @@ annotation: { path: 2 path: 2 sourceFile: - begin: 2517 - end: 2521 + begin: 2560 + end: 2564 } annotation: { path: 4 @@ -99,8 +99,8 @@ annotation: { path: 2 path: 2 sourceFile: - begin: 2568 - end: 2572 + begin: 2611 + end: 2615 } annotation: { path: 4 @@ -108,8 +108,8 @@ annotation: { path: 2 path: 2 sourceFile: - begin: 2645 - end: 2652 + begin: 2688 + end: 2695 } annotation: { path: 4 @@ -117,8 +117,8 @@ annotation: { path: 2 path: 2 sourceFile: - begin: 2695 - end: 2704 + begin: 2738 + end: 2747 } annotation: { path: 4 @@ -126,8 +126,8 @@ annotation: { path: 2 path: 3 sourceFile: - begin: 2816 - end: 2831 + begin: 2859 + end: 2874 } annotation: { path: 4 @@ -135,8 +135,8 @@ annotation: { path: 2 path: 3 sourceFile: - begin: 2922 - end: 2937 + begin: 2965 + end: 2980 } annotation: { path: 4 @@ -144,8 +144,8 @@ annotation: { path: 2 path: 3 sourceFile: - begin: 3059 - end: 3077 + begin: 3102 + end: 3120 } annotation: { path: 4 @@ -153,6 +153,6 @@ annotation: { path: 2 path: 3 sourceFile: - begin: 3169 - end: 3189 + begin: 3212 + end: 3232 } diff --git a/protoc_plugin/test/goldens/messageGeneratorEnums b/protoc_plugin/test/goldens/messageGeneratorEnums index 3469c7bab..300593abe 100644 --- a/protoc_plugin/test/goldens/messageGeneratorEnums +++ b/protoc_plugin/test/goldens/messageGeneratorEnums @@ -11,8 +11,8 @@ class PhoneNumber_PhoneType extends $pb.ProtobufEnum { WORK, ]; - static final $core.Map<$core.int, PhoneNumber_PhoneType> _byValue = $pb.ProtobufEnum.initByValue(values); - static PhoneNumber_PhoneType? valueOf($core.int value) => _byValue[value]; + static final $core.Map<$core.int, PhoneNumber_PhoneType> byValue = $pb.ProtobufEnum.initByValue(values); + static PhoneNumber_PhoneType? valueOf($core.int value) => byValue[value]; const PhoneNumber_PhoneType._(super.v, super.n); } diff --git a/protoc_plugin/test/goldens/topLevelEnum.pbenum b/protoc_plugin/test/goldens/topLevelEnum.pbenum index 30d81a24e..787aef1bb 100644 --- a/protoc_plugin/test/goldens/topLevelEnum.pbenum +++ b/protoc_plugin/test/goldens/topLevelEnum.pbenum @@ -26,8 +26,8 @@ class PhoneType extends $pb.ProtobufEnum { WORK, ]; - static final $core.Map<$core.int, PhoneType> _byValue = $pb.ProtobufEnum.initByValue(values); - static PhoneType? valueOf($core.int value) => _byValue[value]; + static final $core.Map<$core.int, PhoneType> byValue = $pb.ProtobufEnum.initByValue(values); + static PhoneType? valueOf($core.int value) => byValue[value]; const PhoneType._(super.v, super.n); } From 6fe139a99707a8ff8478278985e7084acf7fbd5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20A=C4=9Facan?= Date: Wed, 7 May 2025 15:13:11 +0100 Subject: [PATCH 2/4] Rename valueOfMap -> enumValueMap --- protobuf/lib/src/protobuf/builder_info.dart | 26 ++++---- protobuf/lib/src/protobuf/extension.dart | 8 +-- protobuf/lib/src/protobuf/field_info.dart | 16 ++--- protobuf/test/mock_util.dart | 2 +- .../lib/src/extension_generator.dart | 4 +- .../lib/src/generated/descriptor.pb.dart | 12 ++-- protoc_plugin/lib/src/protobuf_field.dart | 6 +- protoc_plugin/test/goldens/messageGenerator | 2 +- .../test/goldens/messageGenerator.meta | 64 +++++++++---------- 9 files changed, 70 insertions(+), 70 deletions(-) diff --git a/protobuf/lib/src/protobuf/builder_info.dart b/protobuf/lib/src/protobuf/builder_info.dart index 1856b77dc..7cc479616 100644 --- a/protobuf/lib/src/protobuf/builder_info.dart +++ b/protobuf/lib/src/protobuf/builder_info.dart @@ -62,7 +62,7 @@ class BuilderInfo { dynamic defaultOrMaker, CreateBuilderFunc? subBuilder, ValueOfFunc? valueOf, - Map? valueOfMap, + Map? enumValueMap, List? enumValues, {String? protoName}) { final index = byIndex.length; @@ -72,7 +72,7 @@ class BuilderInfo { defaultOrMaker: defaultOrMaker, subBuilder: subBuilder, valueOf: valueOf, - valueOfMap: valueOfMap, + enumValueMap: enumValueMap, enumValues: enumValues, protoName: protoName); _addField(fieldInfo); @@ -100,7 +100,7 @@ class BuilderInfo { CheckFunc check, CreateBuilderFunc? subBuilder, ValueOfFunc? valueOf, - Map? valueOfMap, + Map? enumValueMap, List? enumValues, {ProtobufEnum? defaultEnumValue, String? protoName}) { @@ -108,7 +108,7 @@ class BuilderInfo { _addField(FieldInfo.repeated( name, tagNumber, index, fieldType, check, subBuilder, valueOf: valueOf, - valueOfMap: valueOfMap, + enumValueMap: enumValueMap, enumValues: enumValues, defaultEnumValue: defaultEnumValue, protoName: protoName)); @@ -131,11 +131,11 @@ class BuilderInfo { {dynamic defaultOrMaker, CreateBuilderFunc? subBuilder, ValueOfFunc? valueOf, - Map? valueOfMap, + Map? enumValueMap, List? enumValues, String? protoName}) { add(tagNumber, name, fieldType, defaultOrMaker, subBuilder, valueOf, - valueOfMap, enumValues, + enumValueMap, enumValues, protoName: protoName); } @@ -176,11 +176,11 @@ class BuilderInfo { void e(int tagNumber, String name, int fieldType, {dynamic defaultOrMaker, ValueOfFunc? valueOf, - Map? valueOfMap, + Map? enumValueMap, List? enumValues, String? protoName}) { add(tagNumber, name, fieldType, defaultOrMaker, null, valueOf, - valueOfMap, enumValues, + enumValueMap, enumValues, protoName: protoName); } @@ -196,13 +196,13 @@ class BuilderInfo { void pc(int tagNumber, String name, int fieldType, {CreateBuilderFunc? subBuilder, ValueOfFunc? valueOf, - Map? valueOfMap, + Map? enumValueMap, List? enumValues, ProtobufEnum? defaultEnumValue, String? protoName}) { assert(_isGroupOrMessage(fieldType) || _isEnum(fieldType)); addRepeated(tagNumber, name, fieldType, _checkNotNull, subBuilder, - valueOf, valueOfMap, enumValues, + valueOf, enumValueMap, enumValues, defaultEnumValue: defaultEnumValue, protoName: protoName); } @@ -248,7 +248,7 @@ class BuilderInfo { required int valueFieldType, CreateBuilderFunc? valueCreator, ValueOfFunc? valueOf, - Map? valueOfMap, + Map? enumValueMap, List? enumValues, ProtobufEnum? defaultEnumValue, PackageName packageName = const PackageName(''), @@ -265,7 +265,7 @@ class BuilderInfo { valueDefaultOrMaker, valueCreator, valueOf, - valueOfMap, + enumValueMap, enumValues); addMapField(tagNumber, name, keyFieldType, valueFieldType, @@ -342,7 +342,7 @@ class BuilderInfo { ProtobufEnum? _decodeEnum( int tagNumber, ExtensionRegistry? registry, int rawValue) { - final valueMap = fieldInfo[tagNumber]?.valueOfMap; + final valueMap = fieldInfo[tagNumber]?.enumValueMap; if (valueMap != null) { return valueMap[rawValue]; } diff --git a/protobuf/lib/src/protobuf/extension.dart b/protobuf/lib/src/protobuf/extension.dart index 3c7228154..c067a0c7b 100644 --- a/protobuf/lib/src/protobuf/extension.dart +++ b/protobuf/lib/src/protobuf/extension.dart @@ -12,14 +12,14 @@ class Extension extends FieldInfo { {dynamic defaultOrMaker, CreateBuilderFunc? subBuilder, ValueOfFunc? valueOf, - Map? valueOfMap, + Map? enumValueMap, List? enumValues, String? protoName}) : super(name, tagNumber, null, fieldType, defaultOrMaker: defaultOrMaker, subBuilder: subBuilder, valueOf: valueOf, - valueOfMap: valueOfMap, + enumValueMap: enumValueMap, enumValues: enumValues, protoName: protoName); @@ -27,12 +27,12 @@ class Extension extends FieldInfo { {required CheckFunc check, CreateBuilderFunc? subBuilder, ValueOfFunc? valueOf, - Map? valueOfMap, + Map? enumValueMap, List? enumValues, String? protoName}) : super.repeated(name, tagNumber, null, fieldType, check, subBuilder, valueOf: valueOf, - valueOfMap: valueOfMap, + enumValueMap: enumValueMap, enumValues: enumValues, protoName: protoName); diff --git a/protobuf/lib/src/protobuf/field_info.dart b/protobuf/lib/src/protobuf/field_info.dart index d7619cfea..7c8b12eb2 100644 --- a/protobuf/lib/src/protobuf/field_info.dart +++ b/protobuf/lib/src/protobuf/field_info.dart @@ -93,7 +93,7 @@ class FieldInfo { /// Only available in enum fields. final ValueOfFunc? valueOf; - final Map? valueOfMap; + final Map? enumValueMap; /// Function to verify items when adding to a repeated field. /// @@ -104,7 +104,7 @@ class FieldInfo { {dynamic defaultOrMaker, this.subBuilder, this.valueOf, - this.valueOfMap, + this.enumValueMap, this.enumValues, this.defaultEnumValue, String? protoName}) @@ -115,8 +115,8 @@ class FieldInfo { assert(!_isGroupOrMessage(type) || subBuilder != null || _isMapField(type)), - assert(!_isEnum(type) || (valueOf != null && valueOfMap != null), - 'isEnum = ${_isEnum(type)}, valueOf = $valueOf, valueOfMap = $valueOfMap'); + assert(!_isEnum(type) || (valueOf != null && enumValueMap != null), + 'isEnum = ${_isEnum(type)}, valueOf = $valueOf, enumValueMap = $enumValueMap'); // Represents a field that has been removed by a program transformation. FieldInfo.dummy(this.index) @@ -126,7 +126,7 @@ class FieldInfo { type = 0, makeDefault = null, valueOf = null, - valueOfMap = null, + enumValueMap = null, check = null, enumValues = null, defaultEnumValue = null, @@ -135,14 +135,14 @@ class FieldInfo { FieldInfo.repeated(this.name, this.tagNumber, this.index, this.type, CheckFunc this.check, this.subBuilder, {this.valueOf, - this.valueOfMap, + this.enumValueMap, this.enumValues, this.defaultEnumValue, String? protoName}) : makeDefault = (() => PbList(check: check)), _protoName = protoName, assert(_isRepeated(type)), - assert(!_isEnum(type) || (valueOf != null && valueOfMap != null)); + assert(!_isEnum(type) || (valueOf != null && enumValueMap != null)); static MakeDefaultFunc? findMakeDefault(int type, dynamic defaultOrMaker) { if (defaultOrMaker == null) return PbFieldType._defaultForType(type); @@ -286,7 +286,7 @@ class MapFieldInfo extends FieldInfo?> { defaultOrMaker: () => PbMap(keyFieldType, valueFieldType), defaultEnumValue: defaultEnumValue, protoName: protoName) { - assert(!_isEnum(type) || (valueOf != null && valueOfMap != null)); + assert(!_isEnum(type) || (valueOf != null && enumValueMap != null)); } FieldInfo get valueFieldInfo => diff --git a/protobuf/test/mock_util.dart b/protobuf/test/mock_util.dart index 3b7d0d414..9aac3c44f 100644 --- a/protobuf/test/mock_util.dart +++ b/protobuf/test/mock_util.dart @@ -24,7 +24,7 @@ BuilderInfo mockInfo(String className, CreateBuilderFunc create) { ..e(7, 'enm', PbFieldType.OE, defaultOrMaker: mockEnumValues.first, valueOf: (i) => mockEnumValues.firstWhereOrNull((e) => e.value == i), - valueOfMap: + enumValueMap: Map.fromEntries(mockEnumValues.map((e) => MapEntry(e.value, e))), enumValues: mockEnumValues); } diff --git a/protoc_plugin/lib/src/extension_generator.dart b/protoc_plugin/lib/src/extension_generator.dart index 4bba97550..89fe125ce 100644 --- a/protoc_plugin/lib/src/extension_generator.dart +++ b/protoc_plugin/lib/src/extension_generator.dart @@ -120,7 +120,7 @@ class ExtensionGenerator { named['subBuilder'] = '$dartType.create'; } else if (type.isEnum) { named['valueOf'] = '$dartType.valueOf'; - named['valueOfMap'] = '$dartType.byValue'; + named['enumValueMap'] = '$dartType.byValue'; named['enumValues'] = '$dartType.values'; } } else { @@ -131,7 +131,7 @@ class ExtensionGenerator { } else if (type.isEnum) { final dartEnum = type.getDartType(fileGen!); named['valueOf'] = '$dartEnum.valueOf'; - named['valueOfMap'] = '$dartEnum.byValue'; + named['enumValueMap'] = '$dartEnum.byValue'; named['enumValues'] = '$dartEnum.values'; } } diff --git a/protoc_plugin/lib/src/generated/descriptor.pb.dart b/protoc_plugin/lib/src/generated/descriptor.pb.dart index e8c814e99..5d6b2ff77 100644 --- a/protoc_plugin/lib/src/generated/descriptor.pb.dart +++ b/protoc_plugin/lib/src/generated/descriptor.pb.dart @@ -768,13 +768,13 @@ class FieldDescriptorProto extends $pb.GeneratedMessage { 4, _omitFieldNames ? '' : 'label', $pb.PbFieldType.OE, defaultOrMaker: FieldDescriptorProto_Label.LABEL_OPTIONAL, valueOf: FieldDescriptorProto_Label.valueOf, - valueOfMap: FieldDescriptorProto_Label.byValue, + enumValueMap: FieldDescriptorProto_Label.byValue, enumValues: FieldDescriptorProto_Label.values) ..e( 5, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: FieldDescriptorProto_Type.TYPE_DOUBLE, valueOf: FieldDescriptorProto_Type.valueOf, - valueOfMap: FieldDescriptorProto_Type.byValue, + enumValueMap: FieldDescriptorProto_Type.byValue, enumValues: FieldDescriptorProto_Type.values) ..aOS(6, _omitFieldNames ? '' : 'typeName') ..aOS(7, _omitFieldNames ? '' : 'defaultValue') @@ -1736,7 +1736,7 @@ class FileOptions extends $pb.GeneratedMessage { 9, _omitFieldNames ? '' : 'optimizeFor', $pb.PbFieldType.OE, defaultOrMaker: FileOptions_OptimizeMode.SPEED, valueOf: FileOptions_OptimizeMode.valueOf, - valueOfMap: FileOptions_OptimizeMode.byValue, + enumValueMap: FileOptions_OptimizeMode.byValue, enumValues: FileOptions_OptimizeMode.values) ..aOB(10, _omitFieldNames ? '' : 'javaMultipleFiles') ..aOS(11, _omitFieldNames ? '' : 'goPackage') @@ -2316,7 +2316,7 @@ class FieldOptions extends $pb.GeneratedMessage { 1, _omitFieldNames ? '' : 'ctype', $pb.PbFieldType.OE, defaultOrMaker: FieldOptions_CType.STRING, valueOf: FieldOptions_CType.valueOf, - valueOfMap: FieldOptions_CType.byValue, + enumValueMap: FieldOptions_CType.byValue, enumValues: FieldOptions_CType.values) ..aOB(2, _omitFieldNames ? '' : 'packed') ..aOB(3, _omitFieldNames ? '' : 'deprecated') @@ -2325,7 +2325,7 @@ class FieldOptions extends $pb.GeneratedMessage { 6, _omitFieldNames ? '' : 'jstype', $pb.PbFieldType.OE, defaultOrMaker: FieldOptions_JSType.JS_NORMAL, valueOf: FieldOptions_JSType.valueOf, - valueOfMap: FieldOptions_JSType.byValue, + enumValueMap: FieldOptions_JSType.byValue, enumValues: FieldOptions_JSType.values) ..aOB(10, _omitFieldNames ? '' : 'weak') ..pc( @@ -2827,7 +2827,7 @@ class MethodOptions extends $pb.GeneratedMessage { 34, _omitFieldNames ? '' : 'idempotencyLevel', $pb.PbFieldType.OE, defaultOrMaker: MethodOptions_IdempotencyLevel.IDEMPOTENCY_UNKNOWN, valueOf: MethodOptions_IdempotencyLevel.valueOf, - valueOfMap: MethodOptions_IdempotencyLevel.byValue, + enumValueMap: MethodOptions_IdempotencyLevel.byValue, enumValues: MethodOptions_IdempotencyLevel.values) ..pc( 999, _omitFieldNames ? '' : 'uninterpretedOption', $pb.PbFieldType.PM, diff --git a/protoc_plugin/lib/src/protobuf_field.dart b/protoc_plugin/lib/src/protobuf_field.dart index 5b8b719ec..b1e148403 100644 --- a/protoc_plugin/lib/src/protobuf_field.dart +++ b/protoc_plugin/lib/src/protobuf_field.dart @@ -221,7 +221,7 @@ class ProtobufField { } if (value.baseType.isEnum) { named['valueOf'] = '$valueType.valueOf'; - named['valueOfMap'] = '$valueType.byValue'; + named['enumValueMap'] = '$valueType.byValue'; named['enumValues'] = '$valueType.values'; named['valueDefaultOrMaker'] = value.generateDefaultFunction(); named['defaultEnumValue'] = value.generateDefaultFunction(); @@ -245,7 +245,7 @@ class ProtobufField { named['subBuilder'] = '$type.create'; } else if (baseType.isEnum) { named['valueOf'] = '$type.valueOf'; - named['valueOfMap'] = '$type.byValue'; + named['enumValueMap'] = '$type.byValue'; named['enumValues'] = '$type.values'; named['defaultEnumValue'] = generateDefaultFunction(); } @@ -258,7 +258,7 @@ class ProtobufField { args.add(typeConstant); named['defaultOrMaker'] = makeDefault; named['valueOf'] = '$type.valueOf'; - named['valueOfMap'] = '$type.byValue'; + named['enumValueMap'] = '$type.byValue'; named['enumValues'] = '$type.values'; invocation = 'e<$type>'; } else if (makeDefault == null) { diff --git a/protoc_plugin/test/goldens/messageGenerator b/protoc_plugin/test/goldens/messageGenerator index a7faa2147..0353f1c8f 100644 --- a/protoc_plugin/test/goldens/messageGenerator +++ b/protoc_plugin/test/goldens/messageGenerator @@ -6,7 +6,7 @@ class PhoneNumber extends $pb.GeneratedMessage { static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'PhoneNumber', createEmptyInstance: create) ..aQS(1, _omitFieldNames ? '' : 'number') - ..e(2, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: PhoneNumber_PhoneType.MOBILE, valueOf: PhoneNumber_PhoneType.valueOf, valueOfMap: PhoneNumber_PhoneType.byValue, enumValues: PhoneNumber_PhoneType.values) + ..e(2, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: PhoneNumber_PhoneType.MOBILE, valueOf: PhoneNumber_PhoneType.valueOf, enumValueMap: PhoneNumber_PhoneType.byValue, enumValues: PhoneNumber_PhoneType.values) ..a<$core.String>(3, _omitFieldNames ? '' : 'name', $pb.PbFieldType.OS, defaultOrMaker: '\$') ..aOS(4, _omitFieldNames ? '' : 'deprecatedField') ; diff --git a/protoc_plugin/test/goldens/messageGenerator.meta b/protoc_plugin/test/goldens/messageGenerator.meta index a1e481afc..3d9c3d9e5 100644 --- a/protoc_plugin/test/goldens/messageGenerator.meta +++ b/protoc_plugin/test/goldens/messageGenerator.meta @@ -18,8 +18,8 @@ annotation: { path: 2 path: 1 sourceFile: - begin: 2046 - end: 2052 + begin: 2048 + end: 2054 } annotation: { path: 4 @@ -27,8 +27,8 @@ annotation: { path: 2 path: 1 sourceFile: - begin: 2094 - end: 2100 + begin: 2096 + end: 2102 } annotation: { path: 4 @@ -36,8 +36,8 @@ annotation: { path: 2 path: 1 sourceFile: - begin: 2173 - end: 2182 + begin: 2175 + end: 2184 } annotation: { path: 4 @@ -45,8 +45,8 @@ annotation: { path: 2 path: 1 sourceFile: - begin: 2225 - end: 2236 + begin: 2227 + end: 2238 } annotation: { path: 4 @@ -54,8 +54,8 @@ annotation: { path: 2 path: 0 sourceFile: - begin: 2308 - end: 2312 + begin: 2310 + end: 2314 } annotation: { path: 4 @@ -63,8 +63,8 @@ annotation: { path: 2 path: 0 sourceFile: - begin: 2353 - end: 2357 + begin: 2355 + end: 2359 } annotation: { path: 4 @@ -72,8 +72,8 @@ annotation: { path: 2 path: 0 sourceFile: - begin: 2438 - end: 2445 + begin: 2440 + end: 2447 } annotation: { path: 4 @@ -81,8 +81,8 @@ annotation: { path: 2 path: 0 sourceFile: - begin: 2488 - end: 2497 + begin: 2490 + end: 2499 } annotation: { path: 4 @@ -90,8 +90,8 @@ annotation: { path: 2 path: 2 sourceFile: - begin: 2560 - end: 2564 + begin: 2562 + end: 2566 } annotation: { path: 4 @@ -99,8 +99,8 @@ annotation: { path: 2 path: 2 sourceFile: - begin: 2611 - end: 2615 + begin: 2613 + end: 2617 } annotation: { path: 4 @@ -108,8 +108,8 @@ annotation: { path: 2 path: 2 sourceFile: - begin: 2688 - end: 2695 + begin: 2690 + end: 2697 } annotation: { path: 4 @@ -117,8 +117,8 @@ annotation: { path: 2 path: 2 sourceFile: - begin: 2738 - end: 2747 + begin: 2740 + end: 2749 } annotation: { path: 4 @@ -126,8 +126,8 @@ annotation: { path: 2 path: 3 sourceFile: - begin: 2859 - end: 2874 + begin: 2861 + end: 2876 } annotation: { path: 4 @@ -135,8 +135,8 @@ annotation: { path: 2 path: 3 sourceFile: - begin: 2965 - end: 2980 + begin: 2967 + end: 2982 } annotation: { path: 4 @@ -144,8 +144,8 @@ annotation: { path: 2 path: 3 sourceFile: - begin: 3102 - end: 3120 + begin: 3104 + end: 3122 } annotation: { path: 4 @@ -153,6 +153,6 @@ annotation: { path: 2 path: 3 sourceFile: - begin: 3212 - end: 3232 + begin: 3214 + end: 3234 } From 0f51158004dd4dc2bda71ea60864e14e05b77b98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20A=C4=9Facan?= Date: Wed, 7 May 2025 15:45:28 +0100 Subject: [PATCH 3/4] Remove valueOf --- protobuf/lib/src/protobuf/builder_info.dart | 59 +++++------------ protobuf/lib/src/protobuf/extension.dart | 4 -- protobuf/lib/src/protobuf/field_info.dart | 14 ++-- protobuf/lib/src/protobuf/proto3_json.dart | 2 +- protobuf/test/dummy_field_test.dart | 2 +- protobuf/test/mock_util.dart | 1 - protoc_plugin/lib/src/enum_generator.dart | 2 - .../lib/src/extension_generator.dart | 2 - .../lib/src/generated/descriptor.pb.dart | 6 -- .../lib/src/generated/descriptor.pbenum.dart | 7 -- .../lib/src/generated/plugin.pbenum.dart | 2 - protoc_plugin/lib/src/protobuf_field.dart | 3 - .../test/generated_message_test.dart | 4 +- .../test/goldens/deprecations.pbenum | 1 - .../test/goldens/doc_comments.pbenum | 1 - protoc_plugin/test/goldens/enum | 1 - protoc_plugin/test/goldens/messageGenerator | 2 +- .../test/goldens/messageGenerator.meta | 64 +++++++++---------- .../test/goldens/messageGeneratorEnums | 1 - .../test/goldens/topLevelEnum.pbenum | 1 - protoc_plugin/test/proto3_json_test.dart | 2 +- 21 files changed, 59 insertions(+), 122 deletions(-) diff --git a/protobuf/lib/src/protobuf/builder_info.dart b/protobuf/lib/src/protobuf/builder_info.dart index 7cc479616..051120888 100644 --- a/protobuf/lib/src/protobuf/builder_info.dart +++ b/protobuf/lib/src/protobuf/builder_info.dart @@ -61,7 +61,6 @@ class BuilderInfo { int? fieldType, dynamic defaultOrMaker, CreateBuilderFunc? subBuilder, - ValueOfFunc? valueOf, Map? enumValueMap, List? enumValues, {String? protoName}) { @@ -71,7 +70,6 @@ class BuilderInfo { : FieldInfo(name, tagNumber, index, fieldType!, defaultOrMaker: defaultOrMaker, subBuilder: subBuilder, - valueOf: valueOf, enumValueMap: enumValueMap, enumValues: enumValues, protoName: protoName); @@ -99,7 +97,6 @@ class BuilderInfo { int fieldType, CheckFunc check, CreateBuilderFunc? subBuilder, - ValueOfFunc? valueOf, Map? enumValueMap, List? enumValues, {ProtobufEnum? defaultEnumValue, @@ -107,7 +104,6 @@ class BuilderInfo { final index = byIndex.length; _addField(FieldInfo.repeated( name, tagNumber, index, fieldType, check, subBuilder, - valueOf: valueOf, enumValueMap: enumValueMap, enumValues: enumValues, defaultEnumValue: defaultEnumValue, @@ -130,57 +126,54 @@ class BuilderInfo { void a(int tagNumber, String name, int fieldType, {dynamic defaultOrMaker, CreateBuilderFunc? subBuilder, - ValueOfFunc? valueOf, Map? enumValueMap, List? enumValues, String? protoName}) { - add(tagNumber, name, fieldType, defaultOrMaker, subBuilder, valueOf, - enumValueMap, enumValues, + add(tagNumber, name, fieldType, defaultOrMaker, subBuilder, enumValueMap, + enumValues, protoName: protoName); } /// Adds PbFieldType.OS String with no default value to reduce generated /// code size. void aOS(int tagNumber, String name, {String? protoName}) { - add(tagNumber, name, PbFieldType.OS, null, null, null, null, null, + add(tagNumber, name, PbFieldType.OS, null, null, null, null, protoName: protoName); } /// Adds PbFieldType.PS String with no default value. void pPS(int tagNumber, String name, {String? protoName}) { addRepeated(tagNumber, name, PbFieldType.PS, - getCheckFunction(PbFieldType.PS), null, null, null, null, + getCheckFunction(PbFieldType.PS), null, null, null, protoName: protoName); } /// Adds PbFieldType.QS String with no default value. void aQS(int tagNumber, String name, {String? protoName}) { - add(tagNumber, name, PbFieldType.QS, null, null, null, null, null, + add(tagNumber, name, PbFieldType.QS, null, null, null, null, protoName: protoName); } /// Adds Int64 field with Int64.ZERO default. void aInt64(int tagNumber, String name, {String? protoName}) { - add( - tagNumber, name, PbFieldType.O6, Int64.ZERO, null, null, null, null, + add(tagNumber, name, PbFieldType.O6, Int64.ZERO, null, null, null, protoName: protoName); } /// Adds a boolean with no default value. void aOB(int tagNumber, String name, {String? protoName}) { - add(tagNumber, name, PbFieldType.OB, null, null, null, null, null, + add(tagNumber, name, PbFieldType.OB, null, null, null, null, protoName: protoName); } // Enum. void e(int tagNumber, String name, int fieldType, {dynamic defaultOrMaker, - ValueOfFunc? valueOf, Map? enumValueMap, List? enumValues, String? protoName}) { - add(tagNumber, name, fieldType, defaultOrMaker, null, valueOf, - enumValueMap, enumValues, + add(tagNumber, name, fieldType, defaultOrMaker, null, enumValueMap, + enumValues, protoName: protoName); } @@ -188,21 +181,20 @@ class BuilderInfo { void p(int tagNumber, String name, int fieldType, {String? protoName}) { assert(!_isGroupOrMessage(fieldType) && !_isEnum(fieldType)); addRepeated(tagNumber, name, fieldType, getCheckFunction(fieldType), - null, null, null, null, + null, null, null, protoName: protoName); } // Repeated message, group, or enum. void pc(int tagNumber, String name, int fieldType, {CreateBuilderFunc? subBuilder, - ValueOfFunc? valueOf, Map? enumValueMap, List? enumValues, ProtobufEnum? defaultEnumValue, String? protoName}) { assert(_isGroupOrMessage(fieldType) || _isEnum(fieldType)); addRepeated(tagNumber, name, fieldType, _checkNotNull, subBuilder, - valueOf, enumValueMap, enumValues, + enumValueMap, enumValues, defaultEnumValue: defaultEnumValue, protoName: protoName); } @@ -216,7 +208,6 @@ class BuilderInfo { subBuilder, null, null, - null, protoName: protoName); } @@ -230,7 +221,6 @@ class BuilderInfo { subBuilder, null, null, - null, protoName: protoName); } @@ -247,26 +237,17 @@ class BuilderInfo { required int keyFieldType, required int valueFieldType, CreateBuilderFunc? valueCreator, - ValueOfFunc? valueOf, Map? enumValueMap, List? enumValues, ProtobufEnum? defaultEnumValue, PackageName packageName = const PackageName(''), String? protoName, dynamic valueDefaultOrMaker}) { - final mapEntryBuilderInfo = - BuilderInfo(entryClassName, package: packageName) - ..add(PbMap._keyFieldNumber, 'key', keyFieldType, null, null, null, - null, null) - ..add( - PbMap._valueFieldNumber, - 'value', - valueFieldType, - valueDefaultOrMaker, - valueCreator, - valueOf, - enumValueMap, - enumValues); + final mapEntryBuilderInfo = BuilderInfo(entryClassName, + package: packageName) + ..add(PbMap._keyFieldNumber, 'key', keyFieldType, null, null, null, null) + ..add(PbMap._valueFieldNumber, 'value', valueFieldType, + valueDefaultOrMaker, valueCreator, enumValueMap, enumValues); addMapField(tagNumber, name, keyFieldType, valueFieldType, mapEntryBuilderInfo, valueCreator, @@ -306,11 +287,6 @@ class BuilderInfo { return i?.tagNumber; } - ValueOfFunc? valueOfFunc(int tagNumber) { - final i = fieldInfo[tagNumber]; - return i?.valueOf; - } - /// The [FieldInfo] for each field in tag number order. List get sortedByTag => _sortedByTag ??= _computeSortedByTag(); @@ -348,7 +324,6 @@ class BuilderInfo { } return registry ?.getExtension(qualifiedMessageName, tagNumber) - ?.valueOf - ?.call(rawValue); + ?.enumValueMap?[rawValue]; } } diff --git a/protobuf/lib/src/protobuf/extension.dart b/protobuf/lib/src/protobuf/extension.dart index c067a0c7b..8d70ba1cc 100644 --- a/protobuf/lib/src/protobuf/extension.dart +++ b/protobuf/lib/src/protobuf/extension.dart @@ -11,14 +11,12 @@ class Extension extends FieldInfo { Extension(this.extendee, String name, int tagNumber, int fieldType, {dynamic defaultOrMaker, CreateBuilderFunc? subBuilder, - ValueOfFunc? valueOf, Map? enumValueMap, List? enumValues, String? protoName}) : super(name, tagNumber, null, fieldType, defaultOrMaker: defaultOrMaker, subBuilder: subBuilder, - valueOf: valueOf, enumValueMap: enumValueMap, enumValues: enumValues, protoName: protoName); @@ -26,12 +24,10 @@ class Extension extends FieldInfo { Extension.repeated(this.extendee, String name, int tagNumber, int fieldType, {required CheckFunc check, CreateBuilderFunc? subBuilder, - ValueOfFunc? valueOf, Map? enumValueMap, List? enumValues, String? protoName}) : super.repeated(name, tagNumber, null, fieldType, check, subBuilder, - valueOf: valueOf, enumValueMap: enumValueMap, enumValues: enumValues, protoName: protoName); diff --git a/protobuf/lib/src/protobuf/field_info.dart b/protobuf/lib/src/protobuf/field_info.dart index 7c8b12eb2..ba0b449d0 100644 --- a/protobuf/lib/src/protobuf/field_info.dart +++ b/protobuf/lib/src/protobuf/field_info.dart @@ -91,8 +91,6 @@ class FieldInfo { /// Mapping from enum integer values to enum values. /// /// Only available in enum fields. - final ValueOfFunc? valueOf; - final Map? enumValueMap; /// Function to verify items when adding to a repeated field. @@ -103,7 +101,6 @@ class FieldInfo { FieldInfo(this.name, this.tagNumber, this.index, this.type, {dynamic defaultOrMaker, this.subBuilder, - this.valueOf, this.enumValueMap, this.enumValues, this.defaultEnumValue, @@ -115,8 +112,7 @@ class FieldInfo { assert(!_isGroupOrMessage(type) || subBuilder != null || _isMapField(type)), - assert(!_isEnum(type) || (valueOf != null && enumValueMap != null), - 'isEnum = ${_isEnum(type)}, valueOf = $valueOf, enumValueMap = $enumValueMap'); + assert(!_isEnum(type) || enumValueMap != null); // Represents a field that has been removed by a program transformation. FieldInfo.dummy(this.index) @@ -125,7 +121,6 @@ class FieldInfo { tagNumber = 0, type = 0, makeDefault = null, - valueOf = null, enumValueMap = null, check = null, enumValues = null, @@ -134,15 +129,14 @@ class FieldInfo { FieldInfo.repeated(this.name, this.tagNumber, this.index, this.type, CheckFunc this.check, this.subBuilder, - {this.valueOf, - this.enumValueMap, + {this.enumValueMap, this.enumValues, this.defaultEnumValue, String? protoName}) : makeDefault = (() => PbList(check: check)), _protoName = protoName, assert(_isRepeated(type)), - assert(!_isEnum(type) || (valueOf != null && enumValueMap != null)); + assert(!_isEnum(type) || enumValueMap != null); static MakeDefaultFunc? findMakeDefault(int type, dynamic defaultOrMaker) { if (defaultOrMaker == null) return PbFieldType._defaultForType(type); @@ -286,7 +280,7 @@ class MapFieldInfo extends FieldInfo?> { defaultOrMaker: () => PbMap(keyFieldType, valueFieldType), defaultEnumValue: defaultEnumValue, protoName: protoName) { - assert(!_isEnum(type) || (valueOf != null && enumValueMap != null)); + assert(!_isEnum(type) || enumValueMap != null); } FieldInfo get valueFieldInfo => diff --git a/protobuf/lib/src/protobuf/proto3_json.dart b/protobuf/lib/src/protobuf/proto3_json.dart index c40806d4a..c811a03d1 100644 --- a/protobuf/lib/src/protobuf/proto3_json.dart +++ b/protobuf/lib/src/protobuf/proto3_json.dart @@ -213,7 +213,7 @@ void _mergeFromProto3Json( if ((result != null) || ignoreUnknownFields) return result; throw context.parseException('Unknown enum value', value); } else if (value is int) { - return fieldInfo.valueOf!(value) ?? + return fieldInfo.enumValueMap![value] ?? (ignoreUnknownFields ? null : (throw context.parseException( diff --git a/protobuf/test/dummy_field_test.dart b/protobuf/test/dummy_field_test.dart index 16da24246..7867c8569 100644 --- a/protobuf/test/dummy_field_test.dart +++ b/protobuf/test/dummy_field_test.dart @@ -9,7 +9,7 @@ class Message extends GeneratedMessage { @override BuilderInfo get info_ => _i; static final _i = BuilderInfo('Message') - ..add(0, 'dummy', null, null, null, null, null, null); + ..add(0, 'dummy', null, null, null, null, null); @override Message createEmptyInstance() => Message(); diff --git a/protobuf/test/mock_util.dart b/protobuf/test/mock_util.dart index 9aac3c44f..32cd202f0 100644 --- a/protobuf/test/mock_util.dart +++ b/protobuf/test/mock_util.dart @@ -23,7 +23,6 @@ BuilderInfo mockInfo(String className, CreateBuilderFunc create) { // 6 is reserved for extensions in other tests. ..e(7, 'enm', PbFieldType.OE, defaultOrMaker: mockEnumValues.first, - valueOf: (i) => mockEnumValues.firstWhereOrNull((e) => e.value == i), enumValueMap: Map.fromEntries(mockEnumValues.map((e) => MapEntry(e.value, e))), enumValues: mockEnumValues); diff --git a/protoc_plugin/lib/src/enum_generator.dart b/protoc_plugin/lib/src/enum_generator.dart index 075f32179..9b65f6146 100644 --- a/protoc_plugin/lib/src/enum_generator.dart +++ b/protoc_plugin/lib/src/enum_generator.dart @@ -178,8 +178,6 @@ class EnumGenerator extends ProtobufContainer { out.println( 'static final $coreImportPrefix.Map<$coreImportPrefix.int, $classname> byValue =' ' $protobufImportPrefix.ProtobufEnum.initByValue(values);'); - out.println('static $classname? valueOf($coreImportPrefix.int value) =>' - ' byValue[value];'); out.println(); out.println('const $classname._(super.v, super.n);'); diff --git a/protoc_plugin/lib/src/extension_generator.dart b/protoc_plugin/lib/src/extension_generator.dart index 89fe125ce..84c90185c 100644 --- a/protoc_plugin/lib/src/extension_generator.dart +++ b/protoc_plugin/lib/src/extension_generator.dart @@ -119,7 +119,6 @@ class ExtensionGenerator { if (type.isMessage || type.isGroup) { named['subBuilder'] = '$dartType.create'; } else if (type.isEnum) { - named['valueOf'] = '$dartType.valueOf'; named['enumValueMap'] = '$dartType.byValue'; named['enumValues'] = '$dartType.values'; } @@ -130,7 +129,6 @@ class ExtensionGenerator { named['subBuilder'] = '$dartType.create'; } else if (type.isEnum) { final dartEnum = type.getDartType(fileGen!); - named['valueOf'] = '$dartEnum.valueOf'; named['enumValueMap'] = '$dartEnum.byValue'; named['enumValues'] = '$dartEnum.values'; } diff --git a/protoc_plugin/lib/src/generated/descriptor.pb.dart b/protoc_plugin/lib/src/generated/descriptor.pb.dart index 5d6b2ff77..332e49811 100644 --- a/protoc_plugin/lib/src/generated/descriptor.pb.dart +++ b/protoc_plugin/lib/src/generated/descriptor.pb.dart @@ -767,13 +767,11 @@ class FieldDescriptorProto extends $pb.GeneratedMessage { ..e( 4, _omitFieldNames ? '' : 'label', $pb.PbFieldType.OE, defaultOrMaker: FieldDescriptorProto_Label.LABEL_OPTIONAL, - valueOf: FieldDescriptorProto_Label.valueOf, enumValueMap: FieldDescriptorProto_Label.byValue, enumValues: FieldDescriptorProto_Label.values) ..e( 5, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: FieldDescriptorProto_Type.TYPE_DOUBLE, - valueOf: FieldDescriptorProto_Type.valueOf, enumValueMap: FieldDescriptorProto_Type.byValue, enumValues: FieldDescriptorProto_Type.values) ..aOS(6, _omitFieldNames ? '' : 'typeName') @@ -1735,7 +1733,6 @@ class FileOptions extends $pb.GeneratedMessage { ..e( 9, _omitFieldNames ? '' : 'optimizeFor', $pb.PbFieldType.OE, defaultOrMaker: FileOptions_OptimizeMode.SPEED, - valueOf: FileOptions_OptimizeMode.valueOf, enumValueMap: FileOptions_OptimizeMode.byValue, enumValues: FileOptions_OptimizeMode.values) ..aOB(10, _omitFieldNames ? '' : 'javaMultipleFiles') @@ -2315,7 +2312,6 @@ class FieldOptions extends $pb.GeneratedMessage { ..e( 1, _omitFieldNames ? '' : 'ctype', $pb.PbFieldType.OE, defaultOrMaker: FieldOptions_CType.STRING, - valueOf: FieldOptions_CType.valueOf, enumValueMap: FieldOptions_CType.byValue, enumValues: FieldOptions_CType.values) ..aOB(2, _omitFieldNames ? '' : 'packed') @@ -2324,7 +2320,6 @@ class FieldOptions extends $pb.GeneratedMessage { ..e( 6, _omitFieldNames ? '' : 'jstype', $pb.PbFieldType.OE, defaultOrMaker: FieldOptions_JSType.JS_NORMAL, - valueOf: FieldOptions_JSType.valueOf, enumValueMap: FieldOptions_JSType.byValue, enumValues: FieldOptions_JSType.values) ..aOB(10, _omitFieldNames ? '' : 'weak') @@ -2826,7 +2821,6 @@ class MethodOptions extends $pb.GeneratedMessage { ..e( 34, _omitFieldNames ? '' : 'idempotencyLevel', $pb.PbFieldType.OE, defaultOrMaker: MethodOptions_IdempotencyLevel.IDEMPOTENCY_UNKNOWN, - valueOf: MethodOptions_IdempotencyLevel.valueOf, enumValueMap: MethodOptions_IdempotencyLevel.byValue, enumValues: MethodOptions_IdempotencyLevel.values) ..pc( diff --git a/protoc_plugin/lib/src/generated/descriptor.pbenum.dart b/protoc_plugin/lib/src/generated/descriptor.pbenum.dart index a6235b723..2df50316a 100644 --- a/protoc_plugin/lib/src/generated/descriptor.pbenum.dart +++ b/protoc_plugin/lib/src/generated/descriptor.pbenum.dart @@ -90,7 +90,6 @@ class FieldDescriptorProto_Type extends $pb.ProtobufEnum { static final $core.Map<$core.int, FieldDescriptorProto_Type> byValue = $pb.ProtobufEnum.initByValue(values); - static FieldDescriptorProto_Type? valueOf($core.int value) => byValue[value]; const FieldDescriptorProto_Type._(super.v, super.n); } @@ -113,7 +112,6 @@ class FieldDescriptorProto_Label extends $pb.ProtobufEnum { static final $core.Map<$core.int, FieldDescriptorProto_Label> byValue = $pb.ProtobufEnum.initByValue(values); - static FieldDescriptorProto_Label? valueOf($core.int value) => byValue[value]; const FieldDescriptorProto_Label._(super.v, super.n); } @@ -138,7 +136,6 @@ class FileOptions_OptimizeMode extends $pb.ProtobufEnum { static final $core.Map<$core.int, FileOptions_OptimizeMode> byValue = $pb.ProtobufEnum.initByValue(values); - static FileOptions_OptimizeMode? valueOf($core.int value) => byValue[value]; const FileOptions_OptimizeMode._(super.v, super.n); } @@ -160,7 +157,6 @@ class FieldOptions_CType extends $pb.ProtobufEnum { static final $core.Map<$core.int, FieldOptions_CType> byValue = $pb.ProtobufEnum.initByValue(values); - static FieldOptions_CType? valueOf($core.int value) => byValue[value]; const FieldOptions_CType._(super.v, super.n); } @@ -186,7 +182,6 @@ class FieldOptions_JSType extends $pb.ProtobufEnum { static final $core.Map<$core.int, FieldOptions_JSType> byValue = $pb.ProtobufEnum.initByValue(values); - static FieldOptions_JSType? valueOf($core.int value) => byValue[value]; const FieldOptions_JSType._(super.v, super.n); } @@ -213,8 +208,6 @@ class MethodOptions_IdempotencyLevel extends $pb.ProtobufEnum { static final $core.Map<$core.int, MethodOptions_IdempotencyLevel> byValue = $pb.ProtobufEnum.initByValue(values); - static MethodOptions_IdempotencyLevel? valueOf($core.int value) => - byValue[value]; const MethodOptions_IdempotencyLevel._(super.v, super.n); } diff --git a/protoc_plugin/lib/src/generated/plugin.pbenum.dart b/protoc_plugin/lib/src/generated/plugin.pbenum.dart index e9f3f3671..62219bc2b 100644 --- a/protoc_plugin/lib/src/generated/plugin.pbenum.dart +++ b/protoc_plugin/lib/src/generated/plugin.pbenum.dart @@ -29,8 +29,6 @@ class CodeGeneratorResponse_Feature extends $pb.ProtobufEnum { static final $core.Map<$core.int, CodeGeneratorResponse_Feature> byValue = $pb.ProtobufEnum.initByValue(values); - static CodeGeneratorResponse_Feature? valueOf($core.int value) => - byValue[value]; const CodeGeneratorResponse_Feature._(super.v, super.n); } diff --git a/protoc_plugin/lib/src/protobuf_field.dart b/protoc_plugin/lib/src/protobuf_field.dart index b1e148403..0e4a14f8d 100644 --- a/protoc_plugin/lib/src/protobuf_field.dart +++ b/protoc_plugin/lib/src/protobuf_field.dart @@ -220,7 +220,6 @@ class ProtobufField { named['valueDefaultOrMaker'] = value.generateDefaultFunction(); } if (value.baseType.isEnum) { - named['valueOf'] = '$valueType.valueOf'; named['enumValueMap'] = '$valueType.byValue'; named['enumValues'] = '$valueType.values'; named['valueDefaultOrMaker'] = value.generateDefaultFunction(); @@ -244,7 +243,6 @@ class ProtobufField { if (baseType.isMessage || baseType.isGroup) { named['subBuilder'] = '$type.create'; } else if (baseType.isEnum) { - named['valueOf'] = '$type.valueOf'; named['enumValueMap'] = '$type.byValue'; named['enumValues'] = '$type.values'; named['defaultEnumValue'] = generateDefaultFunction(); @@ -257,7 +255,6 @@ class ProtobufField { if (baseType.isEnum) { args.add(typeConstant); named['defaultOrMaker'] = makeDefault; - named['valueOf'] = '$type.valueOf'; named['enumValueMap'] = '$type.byValue'; named['enumValues'] = '$type.values'; invocation = 'e<$type>'; diff --git a/protoc_plugin/test/generated_message_test.dart b/protoc_plugin/test/generated_message_test.dart index a25f6a4d4..1c40ffcf7 100644 --- a/protoc_plugin/test/generated_message_test.dart +++ b/protoc_plugin/test/generated_message_test.dart @@ -151,9 +151,9 @@ void main() { test('testEnumMap', () { for (final value in ForeignEnum.values) { - expect(ForeignEnum.valueOf(value.value), value); + expect(ForeignEnum.byValue[value.value], value); } - expect(ForeignEnum.valueOf(12345), isNull); + expect(ForeignEnum.byValue[12345], isNull); }); test('testParsePackedToUnpacked', () { diff --git a/protoc_plugin/test/goldens/deprecations.pbenum b/protoc_plugin/test/goldens/deprecations.pbenum index e25bf4021..ea85a190b 100644 --- a/protoc_plugin/test/goldens/deprecations.pbenum +++ b/protoc_plugin/test/goldens/deprecations.pbenum @@ -26,7 +26,6 @@ class A extends $pb.ProtobufEnum { static final $core.Map<$core.int, A> byValue = $pb.ProtobufEnum.initByValue(values); - static A? valueOf($core.int value) => byValue[value]; const A._(super.v, super.n); } diff --git a/protoc_plugin/test/goldens/doc_comments.pbenum b/protoc_plugin/test/goldens/doc_comments.pbenum index ffbc36801..7cf625aeb 100644 --- a/protoc_plugin/test/goldens/doc_comments.pbenum +++ b/protoc_plugin/test/goldens/doc_comments.pbenum @@ -28,7 +28,6 @@ class A extends $pb.ProtobufEnum { static final $core.Map<$core.int, A> byValue = $pb.ProtobufEnum.initByValue(values); - static A? valueOf($core.int value) => byValue[value]; const A._(super.v, super.n); } diff --git a/protoc_plugin/test/goldens/enum b/protoc_plugin/test/goldens/enum index 59c2944b8..670351a4e 100644 --- a/protoc_plugin/test/goldens/enum +++ b/protoc_plugin/test/goldens/enum @@ -12,7 +12,6 @@ class PhoneType extends $pb.ProtobufEnum { ]; static final $core.Map<$core.int, PhoneType> byValue = $pb.ProtobufEnum.initByValue(values); - static PhoneType? valueOf($core.int value) => byValue[value]; const PhoneType._(super.v, super.n); } diff --git a/protoc_plugin/test/goldens/messageGenerator b/protoc_plugin/test/goldens/messageGenerator index 0353f1c8f..98084bd27 100644 --- a/protoc_plugin/test/goldens/messageGenerator +++ b/protoc_plugin/test/goldens/messageGenerator @@ -6,7 +6,7 @@ class PhoneNumber extends $pb.GeneratedMessage { static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'PhoneNumber', createEmptyInstance: create) ..aQS(1, _omitFieldNames ? '' : 'number') - ..e(2, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: PhoneNumber_PhoneType.MOBILE, valueOf: PhoneNumber_PhoneType.valueOf, enumValueMap: PhoneNumber_PhoneType.byValue, enumValues: PhoneNumber_PhoneType.values) + ..e(2, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: PhoneNumber_PhoneType.MOBILE, enumValueMap: PhoneNumber_PhoneType.byValue, enumValues: PhoneNumber_PhoneType.values) ..a<$core.String>(3, _omitFieldNames ? '' : 'name', $pb.PbFieldType.OS, defaultOrMaker: '\$') ..aOS(4, _omitFieldNames ? '' : 'deprecatedField') ; diff --git a/protoc_plugin/test/goldens/messageGenerator.meta b/protoc_plugin/test/goldens/messageGenerator.meta index 3d9c3d9e5..8c76702b4 100644 --- a/protoc_plugin/test/goldens/messageGenerator.meta +++ b/protoc_plugin/test/goldens/messageGenerator.meta @@ -18,8 +18,8 @@ annotation: { path: 2 path: 1 sourceFile: - begin: 2048 - end: 2054 + begin: 2008 + end: 2014 } annotation: { path: 4 @@ -27,8 +27,8 @@ annotation: { path: 2 path: 1 sourceFile: - begin: 2096 - end: 2102 + begin: 2056 + end: 2062 } annotation: { path: 4 @@ -36,8 +36,8 @@ annotation: { path: 2 path: 1 sourceFile: - begin: 2175 - end: 2184 + begin: 2135 + end: 2144 } annotation: { path: 4 @@ -45,8 +45,8 @@ annotation: { path: 2 path: 1 sourceFile: - begin: 2227 - end: 2238 + begin: 2187 + end: 2198 } annotation: { path: 4 @@ -54,8 +54,8 @@ annotation: { path: 2 path: 0 sourceFile: - begin: 2310 - end: 2314 + begin: 2270 + end: 2274 } annotation: { path: 4 @@ -63,8 +63,8 @@ annotation: { path: 2 path: 0 sourceFile: - begin: 2355 - end: 2359 + begin: 2315 + end: 2319 } annotation: { path: 4 @@ -72,8 +72,8 @@ annotation: { path: 2 path: 0 sourceFile: - begin: 2440 - end: 2447 + begin: 2400 + end: 2407 } annotation: { path: 4 @@ -81,8 +81,8 @@ annotation: { path: 2 path: 0 sourceFile: - begin: 2490 - end: 2499 + begin: 2450 + end: 2459 } annotation: { path: 4 @@ -90,8 +90,8 @@ annotation: { path: 2 path: 2 sourceFile: - begin: 2562 - end: 2566 + begin: 2522 + end: 2526 } annotation: { path: 4 @@ -99,8 +99,8 @@ annotation: { path: 2 path: 2 sourceFile: - begin: 2613 - end: 2617 + begin: 2573 + end: 2577 } annotation: { path: 4 @@ -108,8 +108,8 @@ annotation: { path: 2 path: 2 sourceFile: - begin: 2690 - end: 2697 + begin: 2650 + end: 2657 } annotation: { path: 4 @@ -117,8 +117,8 @@ annotation: { path: 2 path: 2 sourceFile: - begin: 2740 - end: 2749 + begin: 2700 + end: 2709 } annotation: { path: 4 @@ -126,8 +126,8 @@ annotation: { path: 2 path: 3 sourceFile: - begin: 2861 - end: 2876 + begin: 2821 + end: 2836 } annotation: { path: 4 @@ -135,8 +135,8 @@ annotation: { path: 2 path: 3 sourceFile: - begin: 2967 - end: 2982 + begin: 2927 + end: 2942 } annotation: { path: 4 @@ -144,8 +144,8 @@ annotation: { path: 2 path: 3 sourceFile: - begin: 3104 - end: 3122 + begin: 3064 + end: 3082 } annotation: { path: 4 @@ -153,6 +153,6 @@ annotation: { path: 2 path: 3 sourceFile: - begin: 3214 - end: 3234 + begin: 3174 + end: 3194 } diff --git a/protoc_plugin/test/goldens/messageGeneratorEnums b/protoc_plugin/test/goldens/messageGeneratorEnums index 300593abe..74d743dba 100644 --- a/protoc_plugin/test/goldens/messageGeneratorEnums +++ b/protoc_plugin/test/goldens/messageGeneratorEnums @@ -12,7 +12,6 @@ class PhoneNumber_PhoneType extends $pb.ProtobufEnum { ]; static final $core.Map<$core.int, PhoneNumber_PhoneType> byValue = $pb.ProtobufEnum.initByValue(values); - static PhoneNumber_PhoneType? valueOf($core.int value) => byValue[value]; const PhoneNumber_PhoneType._(super.v, super.n); } diff --git a/protoc_plugin/test/goldens/topLevelEnum.pbenum b/protoc_plugin/test/goldens/topLevelEnum.pbenum index 787aef1bb..f09f73906 100644 --- a/protoc_plugin/test/goldens/topLevelEnum.pbenum +++ b/protoc_plugin/test/goldens/topLevelEnum.pbenum @@ -27,7 +27,6 @@ class PhoneType extends $pb.ProtobufEnum { ]; static final $core.Map<$core.int, PhoneType> byValue = $pb.ProtobufEnum.initByValue(values); - static PhoneType? valueOf($core.int value) => byValue[value]; const PhoneType._(super.v, super.n); } diff --git a/protoc_plugin/test/proto3_json_test.dart b/protoc_plugin/test/proto3_json_test.dart index dc9de0edb..9295c2299 100644 --- a/protoc_plugin/test/proto3_json_test.dart +++ b/protoc_plugin/test/proto3_json_test.dart @@ -450,7 +450,7 @@ void main() { expect( TestAllTypes()..mergeFromProto3Json({'optionalNestedEnum': 1}), TestAllTypes() - ..optionalNestedEnum = TestAllTypes_NestedEnum.valueOf(1)!); + ..optionalNestedEnum = TestAllTypes_NestedEnum.byValue[1]!); expect(TestAllTypes()..mergeFromProto3Json({'repeatedBool': null}), TestAllTypes()); expect(() => TestAllTypes()..mergeFromProto3Json({'repeatedBool': 100}), From bd1ca9fd5417a31b0a58a276a683c154900e0d26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20A=C4=9Facan?= Date: Wed, 7 May 2025 15:58:13 +0100 Subject: [PATCH 4/4] Fix warn --- protobuf/test/mock_util.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/protobuf/test/mock_util.dart b/protobuf/test/mock_util.dart index 32cd202f0..f7e679298 100644 --- a/protobuf/test/mock_util.dart +++ b/protobuf/test/mock_util.dart @@ -2,7 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:collection/collection.dart'; import 'package:fixnum/fixnum.dart' show Int64; import 'package:protobuf/protobuf.dart' show