Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1376)

Unified Diff: lib/src/protobuf/field_set.dart

Issue 1844293003: Add generic types for strong mode (Closed) Base URL: git@github.com:dart-lang/dart-protobuf.git@master
Patch Set: oops, change all callers to use fi._createRepeatedField Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: lib/src/protobuf/field_set.dart
diff --git a/lib/src/protobuf/field_set.dart b/lib/src/protobuf/field_set.dart
index df7f2ddb6475a698d85e8664243657305a176fb4..9e159b55fdea0a75cb6a4a9fe4a40fe2601e83db 100644
--- a/lib/src/protobuf/field_set.dart
+++ b/lib/src/protobuf/field_set.dart
@@ -32,8 +32,8 @@ class _FieldSet {
_values = _makeValueList(meta.fieldInfo);
static _makeValueList(Map<int, FieldInfo> infos) {
- if (infos.isEmpty) return _emptyList;
- return new List(infos.length);
+ if (infos.isEmpty) return _emptyList;
+ return new List(infos.length);
}
// Metadata about multiple fields
@@ -110,14 +110,14 @@ class _FieldSet {
throw new ArgumentError("tag $tagNumber not defined in $_messageName");
}
- _getDefault(FieldInfo fi) {
+ /*T*/ _getDefault/*<T>*/(FieldInfo/*<T>*/ fi) {
if (!fi.isRepeated) return fi.makeDefault();
if (_isReadOnly) return _emptyList;
// TODO(skybrian) we could avoid this by generating another
// method for repeated fields:
// msg.mutableFoo().add(123);
- var value = _message.createRepeatedField(fi.tagNumber, fi);
+ var value = fi._createRepeatedField(_message);
_setNonExtensionFieldUnchecked(fi, value);
return value;
}
@@ -212,18 +212,18 @@ class _FieldSet {
/// Creates and stores the repeated field if it doesn't exist.
/// If it's an extension and the list doesn't exist, validates and stores it.
/// Suitable for decoders.
- List _ensureRepeatedField(FieldInfo fi) {
+ List/*<T>*/ _ensureRepeatedField/*<T>*/(FieldInfo/*<T>*/ fi) {
assert(!_isReadOnly);
assert(fi.isRepeated);
if (fi.index == null) {
return _ensureExtensions()._ensureRepeatedField(fi);
}
var value = _getFieldOrNull(fi);
- if (value != null) return value;
+ if (value != null) return value as List/*<T>*/;
Søren Gjesse 2016/04/01 06:24:28 This is more a strong mode question. Why is this
Leaf 2016/04/01 17:09:56 We (strong mode) warn on categories of casts that
skybrian 2016/04/01 18:01:40 The return type of _getFieldOrNull is dynamic. I t
- value = _message.createRepeatedField(fi.tagNumber, fi);
- _setNonExtensionFieldUnchecked(fi, value);
- return value;
+ var newValue = fi._createRepeatedField(_message);
+ _setNonExtensionFieldUnchecked(fi, newValue);
+ return newValue;
}
/// Sets a non-extended field and fires events.
@@ -237,7 +237,7 @@ class _FieldSet {
// Generated method implementations
/// The implementation of a generated getter.
- _$get(int index, int tagNumber, defaultValue) {
+ /*T*/ _$get/*<T>*/(int index, int tagNumber, /*T*/ defaultValue) {
assert(_nonExtensionInfo(tagNumber).index == index);
var value = _values[index];
if (value != null) return value;
@@ -265,7 +265,7 @@ class _FieldSet {
assert(_$check(tagNumber, value));
if (_isReadOnly) {
throw new UnsupportedError(
- "attempted to call a setter on a read-only message ($_messageName)");
+ "attempted to call a setter on a read-only message ($_messageName)");
}
if (value == null) {
_$check(tagNumber, value); // throw exception for null value

Powered by Google App Engine
This is Rietveld 408576698