Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions benchmarks/tool/compile_benchmarks.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/usr/bin/env dart

// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// 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.
Expand Down
5 changes: 5 additions & 0 deletions protobuf/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## 6.1.0

* Make `BuilderInfo` methods accept `GeneratedMessage Function()` typed
closures.

## 6.0.0

* New `GeneratedMessage` extension methods `toTextFormat` and `writeTextFormat`
Expand Down
6 changes: 3 additions & 3 deletions protobuf/lib/src/protobuf/builder_info.dart
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ class BuilderInfo {
void aOM<T extends GeneratedMessage>(
int tagNumber,
String name, {
required T Function() subBuilder,
required GeneratedMessage Function() subBuilder,
String? protoName,
}) {
add<T>(
Expand All @@ -430,7 +430,7 @@ class BuilderInfo {
void aQM<T extends GeneratedMessage>(
int tagNumber,
String name, {
required T Function() subBuilder,
required GeneratedMessage Function() subBuilder,
String? protoName,
}) {
add<T>(
Expand All @@ -449,7 +449,7 @@ class BuilderInfo {
void pPM<T extends GeneratedMessage>(
int tagNumber,
String name, {
required T Function() subBuilder,
required GeneratedMessage Function() subBuilder,
String? protoName,
}) {
addRepeated<T>(
Expand Down
40 changes: 10 additions & 30 deletions protobuf/lib/src/protobuf/extension.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,12 @@ class Extension<T> extends FieldInfo<T> {
String name,
int tagNumber,
int fieldType, {
dynamic defaultOrMaker,
CreateBuilderFunc? subBuilder,
ValueOfFunc? valueOf,
List<ProtobufEnum>? enumValues,
String? protoName,
}) : super(
name,
tagNumber,
null,
fieldType,
defaultOrMaker: defaultOrMaker,
subBuilder: subBuilder,
valueOf: valueOf,
enumValues: enumValues,
protoName: protoName,
);
super.defaultOrMaker,
super.subBuilder,
super.valueOf,
super.enumValues,
super.protoName,
}) : super(name, tagNumber, null, fieldType);

Extension.repeated(
this.extendee,
Expand All @@ -37,20 +27,10 @@ class Extension<T> extends FieldInfo<T> {
int fieldType, {
required CheckFunc<T>? check,
CreateBuilderFunc? subBuilder,
ValueOfFunc? valueOf,
List<ProtobufEnum>? enumValues,
String? protoName,
}) : super.repeated(
name,
tagNumber,
null,
fieldType,
check,
subBuilder,
valueOf: valueOf,
enumValues: enumValues,
protoName: protoName,
);
super.valueOf,
super.enumValues,
super.protoName,
}) : super.repeated(name, tagNumber, null, fieldType, check, subBuilder);

@override
int get hashCode => extendee.hashCode * 31 + tagNumber;
Expand Down
6 changes: 2 additions & 4 deletions protobuf/lib/src/protobuf/field_info.dart
Original file line number Diff line number Diff line change
Expand Up @@ -295,17 +295,15 @@ class MapFieldInfo<K, V> extends FieldInfo<PbMap<K, V>?> {
this.valueFieldType,
this.mapEntryBuilderInfo,
this.valueCreator, {
ProtobufEnum? defaultEnumValue,
String? protoName,
super.defaultEnumValue,
super.protoName,
}) : assert(PbFieldType.isMapField(type)),
super(
name,
tagNumber,
index,
type,
defaultOrMaker: () => newPbMap<K, V>(keyFieldType, valueFieldType),
defaultEnumValue: defaultEnumValue,
protoName: protoName,
) {
assert(!PbFieldType.isEnum(type) || valueOf != null);
}
Expand Down
15 changes: 8 additions & 7 deletions protobuf/lib/src/protobuf/generated_message.dart
Original file line number Diff line number Diff line change
Expand Up @@ -544,16 +544,17 @@ abstract class GeneratedMessage {
_defaultMakers = {};

static T Function() _defaultMakerFor<T extends GeneratedMessage>(
T Function()? createFn,
) => _getSingletonMaker(createFn!)._frozenSingletonCreator;
GeneratedMessage Function()? createFn,
) => _getSingletonMaker<T>(createFn!)._frozenSingletonCreator;

/// For generated code only.
/// @nodoc
static T $_defaultFor<T extends GeneratedMessage>(T Function() createFn) =>
_getSingletonMaker(createFn)._frozenSingleton;
static T $_defaultFor<T extends GeneratedMessage>(
GeneratedMessage Function() createFn,
) => _getSingletonMaker<T>(createFn)._frozenSingleton;

static _SingletonMaker<T> _getSingletonMaker<T extends GeneratedMessage>(
T Function() fun,
GeneratedMessage Function() fun,
) {
final oldMaker = _defaultMakers[fun];
if (oldMaker != null) {
Expand All @@ -571,11 +572,11 @@ abstract class GeneratedMessage {
// A downcast to a generic interface type is much easier to perform at runtime
// than a downcast to a generic function type.
class _SingletonMaker<T extends GeneratedMessage> {
final T Function() _creator;
final GeneratedMessage Function() _creator;

_SingletonMaker(this._creator);

late final T _frozenSingleton = _creator()..freeze();
late final T _frozenSingleton = (_creator() as T)..freeze();
// ignore: prefer_function_declarations_over_variables
late final T Function() _frozenSingletonCreator = () => _frozenSingleton;
}
Expand Down
16 changes: 9 additions & 7 deletions protobuf/lib/well_known_types/google/protobuf/any.pb.dart
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ class Any extends $pb.GeneratedMessage with $mixin.AnyMixin {
$core.String? typeUrl,
$core.List<$core.int>? value,
}) {
final result = create();
final result = Any._();
if (typeUrl != null) result.typeUrl = typeUrl;
if (value != null) result.value = value;
return result;
Expand All @@ -118,16 +118,16 @@ class Any extends $pb.GeneratedMessage with $mixin.AnyMixin {

factory Any.fromBuffer($core.List<$core.int> data,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromBuffer(data, registry);
Any()..mergeFromBuffer(data, registry);
factory Any.fromJson($core.String json,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromJson(json, registry);
Any()..mergeFromJson(json, registry);

static final $pb.BuilderInfo _i = $pb.BuilderInfo(
_omitMessageNames ? '' : 'Any',
package:
const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'),
createEmptyInstance: create,
createEmptyInstance: Any.$_createMessage,
wellKnownType: $mixin.WellKnownType.any)
..aOS(1, _omitFieldNames ? '' : 'typeUrl')
..a<$core.List<$core.int>>(
Expand All @@ -144,12 +144,14 @@ class Any extends $pb.GeneratedMessage with $mixin.AnyMixin {
$pb.BuilderInfo get info_ => _i;

@$core.pragma('dart2js:noInline')
@$core.Deprecated('Use Any() / Any.new instead')
static Any create() => Any._();
static $pb.GeneratedMessage $_createMessage() => Any._();
@$core.override
Any createEmptyInstance() => create();
Any createEmptyInstance() => Any._();
@$core.pragma('dart2js:noInline')
static Any getDefault() =>
_defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Any>(create);
static Any getDefault() => _defaultInstance ??=
$pb.GeneratedMessage.$_defaultFor<Any>(Any.$_createMessage);
static Any? _defaultInstance;

/// A URL/resource name that uniquely identifies the type of the serialized
Expand Down
59 changes: 33 additions & 26 deletions protobuf/lib/well_known_types/google/protobuf/api.pb.dart
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class Api extends $pb.GeneratedMessage {
$0.Syntax? syntax,
$core.String? edition,
}) {
final result = create();
final result = Api._();
if (name != null) result.name = name;
if (methods != null) result.methods.addAll(methods);
if (options != null) result.options.addAll(options);
Expand All @@ -60,25 +60,26 @@ class Api extends $pb.GeneratedMessage {

factory Api.fromBuffer($core.List<$core.int> data,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromBuffer(data, registry);
Api()..mergeFromBuffer(data, registry);
factory Api.fromJson($core.String json,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromJson(json, registry);
Api()..mergeFromJson(json, registry);

static final $pb.BuilderInfo _i = $pb.BuilderInfo(
_omitMessageNames ? '' : 'Api',
package:
const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'),
createEmptyInstance: create)
createEmptyInstance: Api.$_createMessage)
..aOS(1, _omitFieldNames ? '' : 'name')
..pPM<Method>(2, _omitFieldNames ? '' : 'methods',
subBuilder: Method.create)
subBuilder: Method.$_createMessage)
..pPM<$0.Option>(3, _omitFieldNames ? '' : 'options',
subBuilder: $0.Option.create)
subBuilder: $0.Option.$_createMessage)
..aOS(4, _omitFieldNames ? '' : 'version')
..aOM<$1.SourceContext>(5, _omitFieldNames ? '' : 'sourceContext',
subBuilder: $1.SourceContext.create)
..pPM<Mixin>(6, _omitFieldNames ? '' : 'mixins', subBuilder: Mixin.create)
subBuilder: $1.SourceContext.$_createMessage)
..pPM<Mixin>(6, _omitFieldNames ? '' : 'mixins',
subBuilder: Mixin.$_createMessage)
..aE<$0.Syntax>(7, _omitFieldNames ? '' : 'syntax',
enumValues: $0.Syntax.values)
..aOS(8, _omitFieldNames ? '' : 'edition')
Expand All @@ -94,12 +95,14 @@ class Api extends $pb.GeneratedMessage {
$pb.BuilderInfo get info_ => _i;

@$core.pragma('dart2js:noInline')
@$core.Deprecated('Use Api() / Api.new instead')
static Api create() => Api._();
static $pb.GeneratedMessage $_createMessage() => Api._();
@$core.override
Api createEmptyInstance() => create();
Api createEmptyInstance() => Api._();
@$core.pragma('dart2js:noInline')
static Api getDefault() =>
_defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Api>(create);
static Api getDefault() => _defaultInstance ??=
$pb.GeneratedMessage.$_defaultFor<Api>(Api.$_createMessage);
static Api? _defaultInstance;

/// The fully qualified name of this interface, including package name
Expand Down Expand Up @@ -204,7 +207,7 @@ class Method extends $pb.GeneratedMessage {
@$core.Deprecated('This field is deprecated.') $0.Syntax? syntax,
@$core.Deprecated('This field is deprecated.') $core.String? edition,
}) {
final result = create();
final result = Method._();
if (name != null) result.name = name;
if (requestTypeUrl != null) result.requestTypeUrl = requestTypeUrl;
if (requestStreaming != null) result.requestStreaming = requestStreaming;
Expand All @@ -220,23 +223,23 @@ class Method extends $pb.GeneratedMessage {

factory Method.fromBuffer($core.List<$core.int> data,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromBuffer(data, registry);
Method()..mergeFromBuffer(data, registry);
factory Method.fromJson($core.String json,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromJson(json, registry);
Method()..mergeFromJson(json, registry);

static final $pb.BuilderInfo _i = $pb.BuilderInfo(
_omitMessageNames ? '' : 'Method',
package:
const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'),
createEmptyInstance: create)
createEmptyInstance: Method.$_createMessage)
..aOS(1, _omitFieldNames ? '' : 'name')
..aOS(2, _omitFieldNames ? '' : 'requestTypeUrl')
..aOB(3, _omitFieldNames ? '' : 'requestStreaming')
..aOS(4, _omitFieldNames ? '' : 'responseTypeUrl')
..aOB(5, _omitFieldNames ? '' : 'responseStreaming')
..pPM<$0.Option>(6, _omitFieldNames ? '' : 'options',
subBuilder: $0.Option.create)
subBuilder: $0.Option.$_createMessage)
..aE<$0.Syntax>(7, _omitFieldNames ? '' : 'syntax',
enumValues: $0.Syntax.values)
..aOS(8, _omitFieldNames ? '' : 'edition')
Expand All @@ -252,12 +255,14 @@ class Method extends $pb.GeneratedMessage {
$pb.BuilderInfo get info_ => _i;

@$core.pragma('dart2js:noInline')
@$core.Deprecated('Use Method() / Method.new instead')
static Method create() => Method._();
static $pb.GeneratedMessage $_createMessage() => Method._();
@$core.override
Method createEmptyInstance() => create();
Method createEmptyInstance() => Method._();
@$core.pragma('dart2js:noInline')
static Method getDefault() =>
_defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Method>(create);
static Method getDefault() => _defaultInstance ??=
$pb.GeneratedMessage.$_defaultFor<Method>(Method.$_createMessage);
static Method? _defaultInstance;

/// The simple name of this method.
Expand Down Expand Up @@ -432,7 +437,7 @@ class Mixin extends $pb.GeneratedMessage {
$core.String? name,
$core.String? root,
}) {
final result = create();
final result = Mixin._();
if (name != null) result.name = name;
if (root != null) result.root = root;
return result;
Expand All @@ -442,16 +447,16 @@ class Mixin extends $pb.GeneratedMessage {

factory Mixin.fromBuffer($core.List<$core.int> data,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromBuffer(data, registry);
Mixin()..mergeFromBuffer(data, registry);
factory Mixin.fromJson($core.String json,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromJson(json, registry);
Mixin()..mergeFromJson(json, registry);

static final $pb.BuilderInfo _i = $pb.BuilderInfo(
_omitMessageNames ? '' : 'Mixin',
package:
const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'),
createEmptyInstance: create)
createEmptyInstance: Mixin.$_createMessage)
..aOS(1, _omitFieldNames ? '' : 'name')
..aOS(2, _omitFieldNames ? '' : 'root')
..hasRequiredFields = false;
Expand All @@ -466,12 +471,14 @@ class Mixin extends $pb.GeneratedMessage {
$pb.BuilderInfo get info_ => _i;

@$core.pragma('dart2js:noInline')
@$core.Deprecated('Use Mixin() / Mixin.new instead')
static Mixin create() => Mixin._();
static $pb.GeneratedMessage $_createMessage() => Mixin._();
@$core.override
Mixin createEmptyInstance() => create();
Mixin createEmptyInstance() => Mixin._();
@$core.pragma('dart2js:noInline')
static Mixin getDefault() =>
_defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Mixin>(create);
static Mixin getDefault() => _defaultInstance ??=
$pb.GeneratedMessage.$_defaultFor<Mixin>(Mixin.$_createMessage);
static Mixin? _defaultInstance;

/// The fully qualified name of the interface which is included.
Expand Down
Loading
Loading