Make PbMapMixin implement Map<String, dynamic>
A more clean way to get to strong mode
R=skybrian@google.com
Review URL: https://codereview.chromium.org//2019423002 .
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7c4dcc3..72fde19 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.5.1+4
+
+* Use a more refined implementation of `Map` in `PbMapMixin`
+
## 0.5.1+3
* Performance: eliminate some dynamic calls.
diff --git a/lib/src/protobuf/mixins/map_mixin.dart b/lib/src/protobuf/mixins/map_mixin.dart
index 0032552..0928681 100644
--- a/lib/src/protobuf/mixins/map_mixin.dart
+++ b/lib/src/protobuf/mixins/map_mixin.dart
@@ -11,7 +11,7 @@
///
/// This mixin is enabled via an option in
/// dart_options.proto in dart-protoc-plugin.
-abstract class PbMapMixin implements Map {
+abstract class PbMapMixin implements Map<String, dynamic> {
// GeneratedMessage properties and methods used by this mixin.
BuilderInfo get info_;
@@ -29,8 +29,8 @@
}
@override
- operator []=(key, val) {
- var tag = getTagNumber(key as String);
+ void operator []=(String key, val) {
+ var tag = getTagNumber(key);
if (tag == null) {
throw new ArgumentError(
"field '${key}' not found in ${info_.messageName}");
@@ -39,13 +39,13 @@
}
@override
- get keys => info_.byName.keys;
+ Iterable<String> get keys => info_.byName.keys;
@override
bool containsKey(Object key) => info_.byName.containsKey(key);
@override
- get length => info_.byName.length;
+ int get length => info_.byName.length;
@override
remove(key) {
diff --git a/pubspec.yaml b/pubspec.yaml
index 2e205fc..40cc6b8 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: protobuf
-version: 0.5.1+3
+version: 0.5.1+4
author: Dart Team <misc@dartlang.org>
description: Runtime library for protobuf support.
homepage: https://github.com/dart-lang/dart-protobuf
diff --git a/test/map_mixin_test.dart b/test/map_mixin_test.dart
index b732a96..ce0143a 100644
--- a/test/map_mixin_test.dart
+++ b/test/map_mixin_test.dart
@@ -15,7 +15,7 @@
import 'mock_util.dart' show MockMessage, mockInfo;
// A minimal protobuf implementation compatible with PbMapMixin.
-class Rec extends MockMessage with MapMixin, PbMapMixin {
+class Rec extends MockMessage with MapMixin<String, dynamic>, PbMapMixin {
get info_ => _info;
static final _info = mockInfo("Rec", () => new Rec());