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);