Observatory strong mode fixes: specify some list literal types.
In some cases we need to specify a type because the inferred type
would be too specific. For example, in the code:
final content = [new SampleBufferControlElement(...)];
...
content.addAll([new BRElement(), ...]);
Strong mode would infer a type of `List<SampleBufferControlElement>`
for `content`, making it impossible to add other kinds of HTML
elements to the list later. So we have to specify explicitly that the
list element type is meant to be `HTMLElement`.
In other cases we need to specify a type because the inferred type is
too general. For example, in the code:
Future<List<String>> complete(...) {
var result = [];
...add values of type String to `result`...
return new Future.value(result);
}
Strong mode would infer a type of `List<dynamic>` for `result`, making
it impossible to enclose in a `Future<List<String>>`. So we have to
specify explicitly that the list element type is meant to be `String`.
Change-Id: I1b1c884529de2775898dfff800d250cd10629811
Reviewed-on: https://dart-review.googlesource.com/56700
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
diff --git a/runtime/observatory/lib/src/elements/class_allocation_profile.dart b/runtime/observatory/lib/src/elements/class_allocation_profile.dart
index 2b7979d..36df884 100644
--- a/runtime/observatory/lib/src/elements/class_allocation_profile.dart
+++ b/runtime/observatory/lib/src/elements/class_allocation_profile.dart
@@ -75,7 +75,7 @@
children = const [];
return;
}
- final content = [
+ final content = <HtmlElement>[
new SampleBufferControlElement(_vm, _progress, _progressStream,
selectedTag: _tag, queue: _r.queue)
..onTagChange.listen((e) {
diff --git a/runtime/observatory/lib/src/elements/context_ref.dart b/runtime/observatory/lib/src/elements/context_ref.dart
index 5b6bcb0..25b1fa5 100644
--- a/runtime/observatory/lib/src/elements/context_ref.dart
+++ b/runtime/observatory/lib/src/elements/context_ref.dart
@@ -65,7 +65,7 @@
}
void render() {
- var children = [
+ var children = <HtmlElement>[
new AnchorElement(href: Uris.inspect(_isolate, object: _context))
..children = [
new SpanElement()
diff --git a/runtime/observatory/lib/src/elements/debugger.dart b/runtime/observatory/lib/src/elements/debugger.dart
index 6ec0d45..119e352 100644
--- a/runtime/observatory/lib/src/elements/debugger.dart
+++ b/runtime/observatory/lib/src/elements/debugger.dart
@@ -696,7 +696,7 @@
if (args.length < 1 || args.length > 2) {
return new Future.value([args.join('')]);
}
- var result = [];
+ var result = <String>[];
if (args.length == 1) {
var prefix = args[0];
for (var option in _options.keys) {
@@ -931,7 +931,7 @@
}
toRemove.add(bptToRemove);
}
- List pending = [];
+ List<Future> pending = [];
for (var bpt in toRemove) {
pending.add(debugger.isolate.removeBreakpoint(bpt));
}
@@ -1041,7 +1041,7 @@
if (args.length != 1) {
return new Future.value([args.join('')]);
}
- var result = [];
+ var result = <String>[];
for (var isolate in debugger.vm.isolates) {
var str = isolate.number.toString();
if (str.startsWith(args[0])) {
@@ -1086,7 +1086,7 @@
}
// Refresh all isolates first.
- var pending = [];
+ var pending = <Future>[];
for (var isolate in debugger.vm.isolates) {
pending.add(isolate.reload());
}
@@ -1517,7 +1517,7 @@
}
// TODO(turnidge): Currently the debugger relies on all libs
// being loaded. Fix this.
- var pending = [];
+ var pending = <Future>[];
for (var lib in response.libraries) {
if (!lib.loaded) {
pending.add(lib.load());
@@ -1915,7 +1915,7 @@
await isolate.addBreakpoint(script, line);
} else {
// TODO(turnidge): Clear this breakpoint at current column.
- var pending = [];
+ var pending = <Future>[];
for (var bpt in bpts) {
pending.add(isolate.removeBreakpoint(bpt));
}
diff --git a/runtime/observatory/lib/src/elements/heap_snapshot.dart b/runtime/observatory/lib/src/elements/heap_snapshot.dart
index 52c53a8..a6b0953 100644
--- a/runtime/observatory/lib/src/elements/heap_snapshot.dart
+++ b/runtime/observatory/lib/src/elements/heap_snapshot.dart
@@ -188,7 +188,7 @@
VirtualTreeElement _tree;
List<Element> _createReport() {
- var report = [
+ var report = <HtmlElement>[
new DivElement()
..classes = ['content-centered-big']
..children = [
diff --git a/runtime/observatory/lib/src/elements/script_inset.dart b/runtime/observatory/lib/src/elements/script_inset.dart
index cdb4087..5f59f6f 100644
--- a/runtime/observatory/lib/src/elements/script_inset.dart
+++ b/runtime/observatory/lib/src/elements/script_inset.dart
@@ -357,7 +357,7 @@
Future loadDeclarationsOfLibrary(S.Library lib) {
return lib.load().then((serviceObject) {
S.Library lib = serviceObject;
- var loads = [];
+ var loads = <Future>[];
for (var func in lib.functions) {
loads.add(func.load());
}
@@ -374,7 +374,7 @@
Future loadDeclarationsOfClass(S.Class cls) {
return cls.load().then((serviceObject) {
S.Class cls = serviceObject;
- var loads = [];
+ var loads = <Future>[];
for (var func in cls.functions) {
loads.add(func.load());
}
@@ -816,7 +816,7 @@
});
} else {
// Existing breakpoint. Remove it.
- List pending = [];
+ List<Future> pending = [];
for (var bpt in line.breakpoints) {
pending.add(line.script.isolate.removeBreakpoint(bpt));
}
diff --git a/runtime/observatory/tests/observatory_ui/flag_list/element_test.dart b/runtime/observatory/tests/observatory_ui/flag_list/element_test.dart
index 727eb0b..e2c74f5 100644
--- a/runtime/observatory/tests/observatory_ui/flag_list/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/flag_list/element_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'dart:html';
+import 'package:observatory/models.dart' as M;
import 'package:unittest/unittest.dart';
import 'package:observatory/src/elements/flag_list.dart';
import 'package:observatory/src/elements/nav/notify.dart';
@@ -32,7 +33,7 @@
const FlagMock(name: 'f2', comment: 'c2', modified: false),
const FlagMock(name: 'f3', comment: 'c3', modified: false),
];
- final flags = []..addAll(modified)..addAll(unmodifed);
+ final flags = <M.Flag>[]..addAll(modified)..addAll(unmodifed);
final repository = new FlagsRepositoryMock(list: flags);
final e = new FlagListElement(vm, events, repository, notifications);
document.body.append(e);