Skip to content

Commit

Permalink
Add implementations of Dart 2 methods. (#62)
Browse files Browse the repository at this point in the history
* Add implementations of Dart 2 methods.

* Address review feedback.

* Prepare to release.
  • Loading branch information
matanlurey authored Mar 13, 2018
1 parent 09094c9 commit 635268e
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 41 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 0.21.3

* Support Dart 2 collection methods where previously threw `UnimplementedError`.

## 0.21.2

* Fix `toObservable(deep: false)` to be shallow again.
Expand Down
55 changes: 15 additions & 40 deletions lib/src/observable_map.dart
Original file line number Diff line number Diff line change
Expand Up @@ -155,66 +155,41 @@ class ObservableMap<K, V> extends Observable implements Map<K, V> {
String toString() => MapBase.mapToString(this);

@override
// TODO: Dart 2.0 requires this method to be implemented.
// ignore: override_on_non_overriding_method
Map<K2, V2> cast<K2, V2>() {
throw new UnimplementedError("cast");
ObservableMap<K2, V2> cast<K2, V2>() {
if (this is ObservableMap<K2, V2>) {
return this as ObservableMap<K2, V2>;
}
return new ObservableMap.createFromType(_map.cast<K2, V2>());
}

@override
// TODO: Dart 2.0 requires this method to be implemented.
// ignore: override_on_non_overriding_method
Map<K2, V2> retype<K2, V2>() {
throw new UnimplementedError("retype");
ObservableMap<K2, V2> retype<K2, V2>() {
return new ObservableMap.createFromType(_map.retype<K2, V2>());
}

@override
// TODO: Dart 2.0 requires this method to be implemented.
// ignore: override_on_non_overriding_getter
Iterable<Null> get entries {
// Change Iterable<Null> to Iterable<MapEntry<K, V>> when
// the MapEntry class has been added.
throw new UnimplementedError("entries");
}
Iterable<MapEntry<K, V>> get entries => _map.entries;

@override
// TODO: Dart 2.0 requires this method to be implemented.
// ignore: override_on_non_overriding_method
void addEntries(Iterable<Object> entries) {
// Change Iterable<Object> to Iterable<MapEntry<K, V>> when
// the MapEntry class has been added.
throw new UnimplementedError("addEntries");
void addEntries(Iterable<MapEntry<K, V>> entries) {
_map.addEntries(entries);
}

@override
// TODO: Dart 2.0 requires this method to be implemented.
// ignore: override_on_non_overriding_method
Map<K2, V2> map<K2, V2>(Object transform(K key, V value)) {
// Change Object to MapEntry<K2, V2> when
// the MapEntry class has been added.
throw new UnimplementedError("map");
Map<K2, V2> map<K2, V2>(MapEntry<K2, V2> transform(K key, V value)) {
return _map.map(transform);
}

@override
// TODO: Dart 2.0 requires this method to be implemented.
// ignore: override_on_non_overriding_method
V update(K key, V update(V value), {V ifAbsent()}) {
throw new UnimplementedError("update");
return _map.update(key, update, ifAbsent: ifAbsent);
}

@override
// TODO: Dart 2.0 requires this method to be implemented.
// ignore: override_on_non_overriding_method
void updateAll(V update(K key, V value)) {
throw new UnimplementedError("updateAll");
}
void updateAll(V update(K key, V value)) => _map.updateAll(update);

@override
// TODO: Dart 2.0 requires this method to be implemented.
// ignore: override_on_non_overriding_method
void removeWhere(bool test(K key, V value)) {
throw new UnimplementedError("removeWhere");
}
void removeWhere(bool test(K key, V value)) => _map.removeWhere(test);

// Note: we don't really have a reasonable old/new value to use here.
// But this should fix "keys" and "values" in templates with minimal overhead.
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: observable
version: 0.21.2
version: 0.21.3
author: Dart Team <[email protected]>
description: Support for marking objects as observable
homepage: https://github.com/dart-lang/observable
Expand Down

0 comments on commit 635268e

Please sign in to comment.