fix observe package to be strong mode clean
R=sigmund@google.com
Review URL: https://codereview.chromium.org//1838473002 .
diff --git a/.gitignore b/.gitignore
index e979170..f20a0d0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
.pub
build/
packages
+.packages
# Or the files created by dart2js.
*.dart.js
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 690c9a0..5785865 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+#### 0.13.5
+
+* Fixed strong mode errors and warnings
+
#### 0.13.4
* Fixed strong mode errors and warnings
diff --git a/lib/src/bind_property.dart b/lib/src/bind_property.dart
index 805507a..202859d 100644
--- a/lib/src/bind_property.dart
+++ b/lib/src/bind_property.dart
@@ -29,8 +29,7 @@
Observable source, Symbol sourceName, void callback()) {
return source.changes.listen((records) {
for (var record in records) {
- if (record is PropertyChangeRecord &&
- (record as PropertyChangeRecord).name == sourceName) {
+ if (record is PropertyChangeRecord && record.name == sourceName) {
callback();
break;
}
diff --git a/lib/transformer.dart b/lib/transformer.dart
index 20e8f1d..2fbbaa3 100644
--- a/lib/transformer.dart
+++ b/lib/transformer.dart
@@ -9,8 +9,8 @@
import 'dart:async';
import 'package:analyzer/analyzer.dart';
+import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/src/generated/ast.dart';
-import 'package:analyzer/src/generated/scanner.dart';
import 'package:barback/barback.dart';
import 'package:code_transformers/messages/build_logger.dart';
import 'package:source_maps/refactor.dart';
@@ -27,6 +27,7 @@
final bool releaseMode;
final bool injectBuildLogsInOutput;
final List<String> _files;
+
ObservableTransformer(
{List<String> files, bool releaseMode, bool injectBuildLogsInOutput})
: _files = files,
@@ -34,6 +35,7 @@
injectBuildLogsInOutput = injectBuildLogsInOutput == null
? releaseMode != true
: injectBuildLogsInOutput;
+
ObservableTransformer.asPlugin(BarbackSettings settings)
: _files = _readFiles(settings.configuration['files']),
releaseMode = settings.mode == BarbackMode.RELEASE,
@@ -41,10 +43,10 @@
static List<String> _readFiles(value) {
if (value == null) return null;
- var files = [];
+ var files = <String>[];
bool error;
if (value is List) {
- files = value;
+ files = new List<String>.from(value);
error = value.any((e) => e is! String);
} else if (value is String) {
files = [value];
@@ -58,8 +60,8 @@
// TODO(nweiz): This should just take an AssetId when barback <0.13.0 support
// is dropped.
- Future<bool> isPrimary(idOrAsset) {
- var id = idOrAsset is AssetId ? idOrAsset : idOrAsset.id;
+ Future<bool> isPrimary(Object idOrAsset) {
+ var id = idOrAsset is AssetId ? idOrAsset : (idOrAsset as Asset).id;
return new Future.value(id.extension == '.dart' &&
(_files == null || _files.contains(id.path)));
}
@@ -256,7 +258,7 @@
id is PrefixedIdentifier ? id.identifier : id;
bool _hasKeyword(Token token, Keyword keyword) =>
- token is KeywordToken && token.keyword == keyword;
+ token?.type == TokenType.KEYWORD && token.lexeme == keyword.syntax;
String _getOriginalCode(TextEditTransaction code, AstNode node) =>
code.original.substring(node.offset, node.end);
@@ -282,7 +284,7 @@
var thisInit = [];
for (var param in ctor.parameters.parameters) {
if (param is DefaultFormalParameter) {
- param = param.parameter;
+ param = (param as DefaultFormalParameter).parameter;
}
if (param is FieldFormalParameter) {
var name = param.identifier.name;
diff --git a/pubspec.yaml b/pubspec.yaml
index 606e414..340416a 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: observe
-version: 0.13.4
+version: 0.13.5
author: Polymer.dart Authors <web-ui-dev@dartlang.org>
description: >
Observable properties and objects for use in template_binding.
@@ -9,16 +9,16 @@
user input into the DOM is immediately assigned to the model.
homepage: https://www.dartlang.org/polymer-dart/
dependencies:
- analyzer: '^0.27.0'
+ analyzer: ^0.27.0
barback: '>=0.14.2 <0.16.0'
- func: '>=0.1.0 <0.2.0'
+ func: ^0.1.0
logging: '>=0.9.0 <0.12.0'
path: '>=0.9.0 <2.0.0'
smoke: '>=0.1.0 <0.4.0'
source_maps: '>=0.9.4 <0.11.0'
- source_span: '>=1.0.0 <2.0.0'
- utf: '>=0.9.0 <0.10.0'
- code_transformers: '>=0.3.0 <0.5.0'
+ source_span: ^1.0.0
+ utf: ^0.9.0
+ code_transformers: ^0.4.2
dev_dependencies:
benchmark_harness: '>=1.0.0 <2.0.0'
browser: any
@@ -26,7 +26,7 @@
test: '^0.12.0'
stack_trace: '>=0.9.1 <2.0.0'
environment:
- sdk: '>=1.8.0 <2.0.0'
+ sdk: ^1.9.0
transformers:
- observe:
files:
diff --git a/test/observe_test.dart b/test/observe_test.dart
index 8c206ac..a262d7f 100644
--- a/test/observe_test.dart
+++ b/test/observe_test.dart
@@ -49,11 +49,14 @@
var maxNumIterations = dirty_check.MAX_DIRTY_CHECK_CYCLES;
var x = new WatcherModel(0);
- var sub = x.changes.listen(expectAsync((_) {
+ int called = 0;
+ var sub = x.changes.listen((_) {
+ called++;
x.value++;
- }, count: maxNumIterations));
+ });
x.value = 1;
Observable.dirtyCheck();
+ expect(called, maxNumIterations);
expect(x.value, maxNumIterations + 1);
expect(messages.length, 2);
@@ -197,13 +200,13 @@
expectPropertyChanges(records, 1);
sub.cancel();
- scheduleMicrotask(expectAsync(() {
+ scheduleMicrotask(() {
subs.add(t.changes.listen(expectAsync((records) {
expectPropertyChanges(records, 1);
})));
t.value = 777;
scheduleMicrotask(Observable.dirtyCheck);
- }));
+ });
}));
t.value = 42;
});
diff --git a/test/observe_test_utils.dart b/test/observe_test_utils.dart
index 46d1b46..31f2e9d 100644
--- a/test/observe_test_utils.dart
+++ b/test/observe_test_utils.dart
@@ -42,8 +42,10 @@
expectChanges(actual, expected, {reason}) =>
expect('$actual', '$expected', reason: reason);
-List getListChangeRecords(List changes, int index) => changes
- .where((c) => c.indexChanged(index)).toList();
+List<ListChangeRecord> getListChangeRecords(List changes, int index) =>
+ new List.from(changes.where((c) => c.indexChanged(index)));
-List getPropertyChangeRecords(List changes, Symbol property) => changes
- .where((c) => c is PropertyChangeRecord && c.name == property).toList();
+List<PropertyChangeRecord> getPropertyChangeRecords(
+ List changes, Symbol property) =>
+ new List.from(
+ changes.where((c) => c is PropertyChangeRecord && c.name == property));
diff --git a/test/path_observer_test.dart b/test/path_observer_test.dart
index 6e45ac5..03c7ca2 100644
--- a/test/path_observer_test.dart
+++ b/test/path_observer_test.dart
@@ -161,7 +161,7 @@
new PropertyPath('').setValueFrom(123, 42);
expect(() => new PropertyPath('foo.bar.baz').setValueFrom(123, 42),
_throwsNSM('foo'));
- var foo = {};
+ Object foo = {};
expect(new PathObserver(foo, '').value, foo);
foo = new Object();
@@ -711,7 +711,7 @@
}
@reflectable
-class TestModel extends ChangeNotifier {
+class TestModel extends ChangeNotifier implements WatcherModel {
var _a, _b, _c;
TestModel([this._a, this._b, this._c]);
diff --git a/test/transformer_test.dart b/test/transformer_test.dart
index 7f9b9f1..1fb4bb2 100644
--- a/test/transformer_test.dart
+++ b/test/transformer_test.dart
@@ -126,21 +126,20 @@
}
/// Helper that applies the transform by creating mock assets.
-Future<String> _transform(String code) {
- return Chain.capture(() {
+Future _transform(String code) {
+ return Chain.capture(() async {
var id = new AssetId('foo', 'a/b/c.dart');
var asset = new Asset.fromString(id, code);
var transformer = new ObservableTransformer();
- return transformer.isPrimary(asset).then((isPrimary) {
- expect(isPrimary, isTrue);
- var transform = new _MockTransform(asset);
- return transformer.apply(transform).then((_) {
- expect(transform.outs, hasLength(2));
- expect(transform.outs[0].id, id);
- expect(transform.outs[1].id, id.addExtension('._buildLogs.1'));
- return transform.outs.first.readAsString();
- });
- });
+ bool isPrimary = await transformer.isPrimary(asset);
+ expect(isPrimary, isTrue);
+ var transform = new _MockTransform(asset);
+ await transformer.apply(transform);
+
+ expect(transform.outs, hasLength(2));
+ expect(transform.outs[0].id, id);
+ expect(transform.outs[1].id, id.addExtension('._buildLogs.1'));
+ return transform.outs.first.readAsString();
});
}