Make dart2js_extra and dart2js_native run in dart2js-strong

Change-Id: I48cf6f40eea4509e415930c05addb2d48d413be9
Reviewed-on: https://dart-review.googlesource.com/63264
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Sigmund Cherem <sigmund@google.com>
diff --git a/tests/compiler/dart2js_extra/11673_test.dart b/tests/compiler/dart2js_extra/11673_test.dart
index 1d7e667..47aa416 100644
--- a/tests/compiler/dart2js_extra/11673_test.dart
+++ b/tests/compiler/dart2js_extra/11673_test.dart
@@ -20,7 +20,7 @@
 use(x) {
   if (x is JSIB) {
     // Should be able to find M.foo since I8 is a subtype of both JSIB and M.
-    Expect.equals(123, x.foo());
+    Expect.equals(123, (x as dynamic).foo());
   }
 }
 
diff --git a/tests/compiler/dart2js_extra/19191_test.dart b/tests/compiler/dart2js_extra/19191_test.dart
index 7e628fd..cf2bd24 100644
--- a/tests/compiler/dart2js_extra/19191_test.dart
+++ b/tests/compiler/dart2js_extra/19191_test.dart
@@ -21,20 +21,12 @@
           invocation.positionalArguments, invocation.namedArguments);
     }
   }
-
-  init() {
-    closure_fails = (String str) {
-      return str.toUpperCase();
-    };
-  }
-
-  run() {
-    print(closure_fails("Hello World"));
-  }
 }
 
 void main() {
-  var a = new A();
-  a.init();
-  a.run();
+  dynamic a = new A();
+  a.closure_fails = (String str) {
+    return str.toUpperCase();
+  };
+  print(a.closure_fails("Hello World"));
 }
diff --git a/tests/compiler/dart2js_extra/21166_test.dart b/tests/compiler/dart2js_extra/21166_test.dart
deleted file mode 100644
index b060c1f..0000000
--- a/tests/compiler/dart2js_extra/21166_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Regression test for http://dartbug.com/21166/
-// Fails when compiling with --checked.
-
-var a = [];
-
-void doStuff() {
-  if (a.length) {
-    // This triggers a TypeConversion to bool in checked mode.
-    var element = a[0]; // This triggers a bounds check but a.length will have
-    a.remove(element); // type [empty].
-  }
-}
-
-main() {
-  a.add(1);
-  a.add(2);
-  try {
-    doStuff(); // This is expected to fail but not crash the compiler.
-  } catch (_) {}
-}
diff --git a/tests/compiler/dart2js_extra/21666_test.dart b/tests/compiler/dart2js_extra/21666_test.dart
deleted file mode 100644
index 857b0e3..0000000
--- a/tests/compiler/dart2js_extra/21666_test.dart
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Regression test for issue 21666 - problems with method that has super calls.
-//
-// Use a method and getter with super calls in various ways.
-
-import 'package:expect/expect.dart';
-
-@MirrorsUsed(targets: const [A, B, Object])
-import 'dart:mirrors';
-
-class X {
-  const X();
-}
-
-class Y {
-  const Y();
-}
-
-typedef fInt(int x);
-typedef fString(String x);
-
-class A {
-  @X()
-  foo(int x) => x + 1;
-  int get bar => A.g;
-
-  static int g = 0;
-}
-
-class B extends A {
-  @Y()
-  foo(int x) => 100 * super.foo(x);
-  int get bar => 1000 * super.bar;
-}
-
-String dump(ClassMirror cm) {
-  var sb = new StringBuffer();
-  sb.write('$cm\n');
-  for (var mm in cm.declarations.values) {
-    sb.write('  $mm\n');
-    // Walking declaration metadata triggers issue 21666.
-    for (var a in mm.metadata) {
-      sb.write('    $a\n');
-    }
-  }
-  print(sb);
-  return '$sb';
-}
-
-main() {
-  var cmB = reflectClass(B);
-  var cmBdump = dump(cmB);
-  var cmAdump = dump(cmB.superclass);
-
-  Expect.equals(dump(reflectClass(A)), cmAdump);
-  Expect.isTrue(cmAdump.contains("'foo'"));
-  Expect.isTrue(cmAdump.contains("'bar'"));
-  Expect.isTrue(cmBdump.contains("'foo'"));
-  Expect.isTrue(cmBdump.contains("'bar'"));
-
-  A.g = 123;
-  var a = new A();
-  var am = reflect(a);
-  var agfoo = am.getField(#foo);
-  var agbar = am.getField(#bar);
-
-  Expect.equals(3, agfoo.reflectee(2));
-  Expect.equals(4, am.invoke(#foo, [3]).reflectee);
-  Expect.equals(123, agbar.reflectee);
-  Expect.isTrue(a.foo is fInt);
-  Expect.isTrue(a.foo is! fString);
-  Expect.isTrue(agfoo.reflectee is fInt);
-  Expect.isTrue(agfoo.reflectee is! fString);
-
-  var b = new B();
-  var bm = reflect(b);
-  var bgfoo = bm.getField(#foo);
-  var bgbar = bm.getField(#bar);
-
-  Expect.equals(300, bgfoo.reflectee(2));
-  Expect.equals(400, bm.invoke(#foo, [3]).reflectee);
-  Expect.equals(123000, bgbar.reflectee);
-  Expect.isTrue(b.foo is fInt);
-  Expect.isTrue(b.foo is! fString);
-  Expect.isTrue(bgfoo.reflectee is fInt);
-  Expect.isTrue(bgfoo.reflectee is! fString);
-}
diff --git a/tests/compiler/dart2js_extra/21724_test.dart b/tests/compiler/dart2js_extra/21724_test.dart
deleted file mode 100644
index eff9690..0000000
--- a/tests/compiler/dart2js_extra/21724_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Regression test for issue 21724 - invalid call to local closure
-
-main() {
-  foo(x) {}
-  try {
-    foo();
-  } catch (_) {}
-}
diff --git a/tests/compiler/dart2js_extra/23056_test.dart b/tests/compiler/dart2js_extra/23056_test.dart
deleted file mode 100644
index a30e4ee..0000000
--- a/tests/compiler/dart2js_extra/23056_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Regression test for http://dartbug.com/23056/
-// Ensure that Mixin prototypes are initialized before first use.
-
-// Mirrors is the only way to have a getter be equipped with metadata.
-@MirrorsUsed(targets: 'M', override: '*')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class M {
-  @NoInline()
-  bool get foo => true;
-}
-
-class A extends Object with M {
-  @NoInline()
-  bool get foo => super.foo;
-}
-
-@AssumeDynamic()
-@NoInline()
-bool hide(bool x) => x;
-
-main() {
-  Expect.isTrue((hide(true) ? new A() : new M()).foo);
-}
diff --git a/tests/compiler/dart2js_extra/23432_test.dart b/tests/compiler/dart2js_extra/23432_test.dart
index b0fc3d9..2333edb 100644
--- a/tests/compiler/dart2js_extra/23432_test.dart
+++ b/tests/compiler/dart2js_extra/23432_test.dart
@@ -20,7 +20,7 @@
 get NEVER => false;
 
 main() {
-  var c = 12345;
+  dynamic c = 12345;
   if (NEVER) c = new N();
   var e;
   try {
diff --git a/tests/compiler/dart2js_extra/23804_test.dart b/tests/compiler/dart2js_extra/23804_test.dart
index 2fad1d5..fbcf965 100644
--- a/tests/compiler/dart2js_extra/23804_test.dart
+++ b/tests/compiler/dart2js_extra/23804_test.dart
@@ -9,7 +9,7 @@
 import 'package:expect/expect.dart';
 
 test(n) => n == 1;
-run(f) => f(1);
+bool run(f(dynamic)) => f(1);
 main() {
   Expect.equals([test].any(run), true);
 }
diff --git a/tests/compiler/dart2js_extra/27199_test.dart b/tests/compiler/dart2js_extra/27199_test.dart
index 485bf3a..2c477fd 100644
--- a/tests/compiler/dart2js_extra/27199_test.dart
+++ b/tests/compiler/dart2js_extra/27199_test.dart
@@ -21,8 +21,8 @@
 confuse(x) => x;
 
 main() {
-  var c = new C();
-  var a = 12;
+  dynamic c = new C();
+  dynamic a = 12;
   if (confuse(true)) a = {};
   c.f = a;
 }
diff --git a/tests/compiler/dart2js_extra/28749_test.dart b/tests/compiler/dart2js_extra/28749_test.dart
index b75dd27..ca4d3bf 100644
--- a/tests/compiler/dart2js_extra/28749_test.dart
+++ b/tests/compiler/dart2js_extra/28749_test.dart
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+// dart2jsOptions=--strong
+
 // Regression test for http://dartbug.com/28749.
 //
 // This would crash at compile time because inner typedefs remain after calling
@@ -47,11 +49,11 @@
   );
 
   Expect.equals(
-    'Wrap<(int) => ((dynamic) => void) => (dynamic) => void>',
+    'Wrap<(int) => ((int) => void) => (int) => void>',
     '${foo<int>(0)}',
   );
   Expect.equals(
-    'Wrap<(int) => ((dynamic) => void) => (dynamic) => void>',
+    'Wrap<(int) => ((String) => void) => (String) => void>',
     '${foo<String>(1)}',
   );
 }
diff --git a/tests/compiler/dart2js_extra/assert_with_message_test.dart b/tests/compiler/dart2js_extra/assert_with_message_test.dart
index 9d2fa14..e860713 100644
--- a/tests/compiler/dart2js_extra/assert_with_message_test.dart
+++ b/tests/compiler/dart2js_extra/assert_with_message_test.dart
@@ -26,23 +26,11 @@
 }
 
 test2() {
-  testFalse('constant function', () {
-    assert(() => false, 'Mumble');
-  });
-}
-
-test3() {
   testFalse('variable false', () {
     assert(confuse(false), 'Mumble');
   });
 }
 
-test4() {
-  testFalse('variable function', () {
-    assert(confuse(() => false), 'Mumble');
-  });
-}
-
 testTypeErrors() {
   check(name, fault) {
     try {
@@ -101,19 +89,17 @@
   Expect.fail('Expected assert to throw');
 }
 
-bool get checkedMode {
+bool get assertionsEnabled {
   bool b = false;
   assert((b = true));
   return b;
 }
 
 main() {
-  if (!checkedMode) return;
+  if (!assertionsEnabled) return;
 
   test1();
   test2();
-  test3();
-  test4();
   testTypeErrors();
   testMessageEffect1();
   testMessageEffect2();
diff --git a/tests/compiler/dart2js_extra/async_stacktrace_test.dart b/tests/compiler/dart2js_extra/async_stacktrace_test.dart
index 687222f..947e2d6 100644
--- a/tests/compiler/dart2js_extra/async_stacktrace_test.dart
+++ b/tests/compiler/dart2js_extra/async_stacktrace_test.dart
@@ -26,7 +26,7 @@
   }
 }
 
-test1(Tracer tracer) {
+Future test1(Tracer tracer) {
   foo() async*
 
   /// asyncStar: ok
@@ -56,7 +56,7 @@
       ;
 }
 
-test2(Tracer tracer) {
+Future test2(Tracer tracer) {
   var savedStackTrace;
   foo() async*
 
@@ -83,7 +83,7 @@
   });
 }
 
-test3(Tracer tracer) {
+Future test3(Tracer tracer) {
   var savedStackTrace;
   foo() async*
 
diff --git a/tests/compiler/dart2js_extra/basic_class_test.dart b/tests/compiler/dart2js_extra/basic_class_test.dart
deleted file mode 100644
index bd6804a..0000000
--- a/tests/compiler/dart2js_extra/basic_class_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-class A {}
-
-class SubA extends A {}
-
-class B {}
-
-void main() {
-  A a;
-  SubA subA;
-  B b;
-  a = a;
-  a = subA;
-  a = b; //# 01: static type warning
-  subA = a;
-  subA = subA;
-  subA = b; //# 02: static type warning
-  b = a; //# 03: static type warning
-  b = subA; //# 04: static type warning
-  b = b;
-}
diff --git a/tests/compiler/dart2js_extra/checked_accessor_test.dart b/tests/compiler/dart2js_extra/checked_accessor_test.dart
deleted file mode 100644
index b67f17a..0000000
--- a/tests/compiler/dart2js_extra/checked_accessor_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import "package:expect/expect.dart";
-
-class E {
-  missingType field;
-}
-
-class WithGetter {
-  String field;
-}
-
-void main() {
-  f(x) {
-    x.field = true;
-  }
-
-  Expect.throws(() {
-    [new E(), new WithGetter()].forEach(f);
-    new missingType();
-    new E().field = 'a string';
-  });
-}
diff --git a/tests/compiler/dart2js_extra/closure_type_reflection2_test.dart b/tests/compiler/dart2js_extra/closure_type_reflection2_test.dart
deleted file mode 100644
index 398dab5..0000000
--- a/tests/compiler/dart2js_extra/closure_type_reflection2_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that classes referenced from a signature of a tear-off closure
-// are emitted.
-
-@MirrorsUsed(targets: 'C')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class A {}
-
-class C {
-  A foo() {}
-}
-
-main() {
-  Expect.isFalse(
-      reflect(new C().foo).function.returnType.toString().contains('dynamic'));
-}
diff --git a/tests/compiler/dart2js_extra/closure_type_reflection_test.dart b/tests/compiler/dart2js_extra/closure_type_reflection_test.dart
deleted file mode 100644
index 8acb4c0..0000000
--- a/tests/compiler/dart2js_extra/closure_type_reflection_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that classes referenced from a signature of a tear-off closure
-// are emitted.
-
-@MirrorsUsed(targets: 'C', symbols: 'A')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class A {}
-
-class C {
-  A foo() {}
-}
-
-main() {
-  Expect.equals("ClassMirror on 'A'",
-      reflect(new C().foo).function.returnType.toString());
-}
diff --git a/tests/compiler/dart2js_extra/consistent_add_error_test.dart b/tests/compiler/dart2js_extra/consistent_add_error_test.dart
index 0796085..79f18f9 100644
--- a/tests/compiler/dart2js_extra/consistent_add_error_test.dart
+++ b/tests/compiler/dart2js_extra/consistent_add_error_test.dart
@@ -126,21 +126,8 @@
     return (confuse(1) as int) + confuse('a');
   }
 
-  static f5() {
-    return (confuse(1) as int) + 'a';
-  }
-
-  static f6() {
-    var a = confuse(true) ? 1 : 2; // Small int with unknown value.
-    return a + 'a';
-  }
-
-  static f7() {
-    return 1 + 'a';
-  }
-
   static test() {
-    check('IntPlusString', f1, f2, f3, f4, f5, f6, f7);
+    check('IntPlusString', f1, f2, f3, f4);
   }
 }
 
@@ -158,25 +145,12 @@
   }
 
   static f4() {
-    return (confuse('a') as String) + 1;
-  }
-
-  static f5() {
     var a = confuse(true) ? 'a' : 'bc';
     return a + confuse(1);
   }
 
-  static f6() {
-    var a = confuse(true) ? 'a' : 'bc';
-    return a + 1;
-  }
-
-  static f7() {
-    return 'a' + 1;
-  }
-
   static test() {
-    check('StringPlusInt', f1, f2, f3, f4, f5, f6, f7);
+    check('StringPlusInt', f1, f2, f3, f4);
   }
 }
 
diff --git a/tests/compiler/dart2js_extra/consistent_codeUnitAt_error_test.dart b/tests/compiler/dart2js_extra/consistent_codeUnitAt_error_test.dart
index 0787ab3..d76bd71 100644
--- a/tests/compiler/dart2js_extra/consistent_codeUnitAt_error_test.dart
+++ b/tests/compiler/dart2js_extra/consistent_codeUnitAt_error_test.dart
@@ -116,7 +116,7 @@
 
   static f3() {
     var a = confuse(true) ? 'AB' : 'ABCDE'; // String with unknown length.
-    return a.codeUnitAt('a');
+    return a.codeUnitAt(('a' as dynamic));
   }
 
   static test() {
diff --git a/tests/compiler/dart2js_extra/consistent_subtract_error_test.dart b/tests/compiler/dart2js_extra/consistent_subtract_error_test.dart
index ed39691..2c839f7 100644
--- a/tests/compiler/dart2js_extra/consistent_subtract_error_test.dart
+++ b/tests/compiler/dart2js_extra/consistent_subtract_error_test.dart
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+/// dart2jsOptions=--omit-implicit-checks
+
 import "package:expect/expect.dart";
 
 // Test that optimized '-' and slow path '-' produce the same error.
@@ -90,21 +92,8 @@
     return (confuse(1) as int) - confuse('a');
   }
 
-  static f5() {
-    return (confuse(1) as int) - 'a';
-  }
-
-  static f6() {
-    var a = confuse(true) ? 1 : 2; // Small int with unknown value.
-    return a - 'a';
-  }
-
-  static f7() {
-    return 1 - 'a';
-  }
-
   static test() {
-    check('IntMinusString', f1, f2, f3, f4, f5, f6, f7);
+    check('IntMinusString', f1, f2, f3, f4);
   }
 }
 
diff --git a/tests/compiler/dart2js_extra/dart2js_extra.status b/tests/compiler/dart2js_extra/dart2js_extra.status
index 0328d9e..f270ced 100644
--- a/tests/compiler/dart2js_extra/dart2js_extra.status
+++ b/tests/compiler/dart2js_extra/dart2js_extra.status
@@ -8,8 +8,6 @@
 class_test: Fail
 constant_javascript_semantics4_test: Fail, OK
 generic_class_is_test: Fail # Issue 32004
-mirror_printer_test: Pass, Slow # Issue 25940, 16473
-mirrors_used_closure_test: Fail # Issue 17939
 no_such_method_test: Fail # Wrong Invocation.memberName.
 statements_test: Fail
 typed_locals_test: Pass, Fail
@@ -40,9 +38,6 @@
 [ $compiler == dart2js && $runtime == chrome && $csp ]
 deferred/load_in_correct_order_test: SkipByDesign # Purposely uses `eval`
 
-[ $compiler == dart2js && $runtime == chromeOnAndroid ]
-no_such_method_mirrors_test: Pass, Slow # TODO(kasperl): Please triage.
-
 [ $compiler == dart2js && $runtime == d8 && $fasta ]
 deferred_fail_and_retry_test: RuntimeError # Uses XHR in dart:html
 deferred_with_csp_nonce_test: RuntimeError # Uses dart:html
@@ -54,21 +49,10 @@
 [ $compiler == dart2js && $runtime == none ]
 *: Fail, Pass # TODO(ahe): Triage these tests.
 
-[ $compiler == dart2js && $checked ]
-variable_type_test/01: Fail, OK
-variable_type_test/03: Fail, OK
-
 [ $compiler == dart2js && $checked && $fasta ]
-deferred/deferred_mirrors1_test: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
-deferred/deferred_mirrors2_test: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
-deferred/reflect_multiple_annotations_test: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
-deferred/reflect_multiple_default_arg_test: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
 dummy_compiler_test: Crash
 local_signature_test: Crash
 minus_zero_test/01: MissingCompileTimeError
-mirrors_used_warning2_test: Crash
-mirrors_used_warning_test/minif: Crash
-mirrors_used_warning_test/none: Crash
 
 [ $compiler == dart2js && $csp ]
 deferred_custom_loader_test: SkipByDesign # Issue 25683
@@ -76,94 +60,18 @@
 js_interop_optional_arg_test: RuntimeError # Issue 31082
 js_interop_test: RuntimeError # Issue 31082
 
-[ $compiler == dart2js && $fast_startup ]
-21666_test: Fail # mirrors not supported
-23056_test: Fail # mirrors not supported
-closure_type_reflection2_test: Fail # mirrors not supported
-closure_type_reflection_test: Fail # mirrors not supported
-deferred/deferred_mirrors1_lib: Fail # mirrors not supported
-deferred/deferred_mirrors1_test: Fail # mirrors not supported
-deferred/deferred_mirrors2_lazy: Fail # mirrors not supported
-deferred/deferred_mirrors2_lib3: Fail # mirrors not supported
-deferred/deferred_mirrors2_test: Fail # mirrors not supported
-deferred/reflect_multiple_annotations_test: CompileTimeError # mirrors not supported
-deferred/reflect_multiple_default_arg_test: CompileTimeError # mirrors not supported
-inference_nsm_mirrors_test: Fail # mirrors not supported
-invalid_annotation2_test/01: Pass # mirrors not supported, passes for the wrong reason
-invalid_annotation2_test/none: Fail # mirrors not supported
-mirror_enqueuer_regression_test: Fail # mirrors not supported
-mirror_invalid_field_access2_test: Fail # mirrors not supported
-mirror_invalid_field_access3_test: Fail # mirrors not supported
-mirror_invalid_field_access4_test: Fail # mirrors not supported
-mirror_invalid_field_access_test: Fail # mirrors not supported
-mirror_invalid_invoke2_test: Fail # mirrors not supported
-mirror_invalid_invoke3_test: Fail # mirrors not supported
-mirror_invalid_invoke_test: Fail # mirrors not supported
-mirror_printer_test: Fail # mirrors not supported
-mirror_test: Fail # mirrors not supported
-mirror_type_inference_field2_test: Fail # mirrors not supported
-mirror_type_inference_field_test: Fail # mirrors not supported
-mirror_type_inference_function_test: Fail # mirrors not supported
-mirrors_declarations_filtering_test: Fail # mirrors not supported
-mirrors_used_closure_test: SkipByDesign
-mirrors_used_metatargets_test: Fail # mirrors not supported
-mirrors_used_native_test: Fail # mirrors not supported
-mirrors_used_warning2_test: Fail # mirrors not supported
-mirrors_used_warning_test: Fail # mirrors not supported
-no_such_method_mirrors_test: Fail # mirrors not supported
-reflect_native_types_test: Fail # mirrors not supported
-
-[ $compiler == dart2js && $fast_startup && $fasta ]
-23056_test: Pass
-deferred/deferred_mirrors1_test: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
-deferred/deferred_mirrors2_test: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
-deferred/reflect_multiple_annotations_test: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
-deferred/reflect_multiple_default_arg_test: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
-mirror_enqueuer_regression_test: Pass
-
 [ $compiler == dart2js && $fasta ]
-21666_test: RuntimeError
 23264_test: RuntimeError
 closure_capture2_test: RuntimeError
-closure_type_reflection2_test: RuntimeError
-closure_type_reflection_test: RuntimeError
 constant_javascript_semantics_test/03: CompileTimeError
 constant_javascript_semantics_test/04: CompileTimeError
 constant_javascript_semantics_test/none: CompileTimeError
-deferred/deferred_mirrors1_test: SkipByDesign
-deferred/deferred_mirrors2_test: RuntimeError
-deferred/reflect_multiple_annotations_test: RuntimeError
-deferred/reflect_multiple_default_arg_test: RuntimeError
-inference_nsm_mirrors_test: SkipByDesign
-invalid_annotation2_test/none: RuntimeError
-mirror_invalid_field_access2_test: RuntimeError
-mirror_invalid_field_access3_test: RuntimeError
-mirror_invalid_field_access4_test: RuntimeError
-mirror_invalid_field_access_test: RuntimeError
-mirror_invalid_invoke2_test: RuntimeError
-mirror_invalid_invoke3_test: RuntimeError
-mirror_invalid_invoke_test: RuntimeError
-mirror_printer_test/01: RuntimeError
-mirror_printer_test/none: RuntimeError
-mirror_test: RuntimeError
-mirror_type_inference_field2_test: RuntimeError
-mirror_type_inference_field_test: RuntimeError
-mirror_type_inference_function_test: RuntimeError
-mirrors_declarations_filtering_test: RuntimeError
-mirrors_used_closure_test: SkipByDesign
-mirrors_used_metatargets_test: RuntimeError
-mirrors_used_native_test: RuntimeError
-mirrors_used_warning2_test: RuntimeError
-mirrors_used_warning_test/minif: RuntimeError
-mirrors_used_warning_test/none: RuntimeError
-no_such_method_mirrors_test: SkipByDesign
 private_symbol_literal_test/01: MissingCompileTimeError
 private_symbol_literal_test/02: MissingCompileTimeError
 private_symbol_literal_test/03: MissingCompileTimeError
 private_symbol_literal_test/04: MissingCompileTimeError
 private_symbol_literal_test/05: MissingCompileTimeError
 private_symbol_literal_test/06: MissingCompileTimeError
-reflect_native_types_test: RuntimeError
 regress/4562_test/none: CompileTimeError
 round_constant_folding_test: CompileTimeError
 type_constant_switch_test/01: MissingCompileTimeError
@@ -198,7 +106,10 @@
 generic_method_dynamic_is_test: RuntimeError # Test against function type variables is only supported in strong mode.
 generic_method_dynamic_type_test: SkipByDesign # Requires strong mode support for function type variables.
 generic_method_static_is_test: RuntimeError # Test against function type variables is only supported in strong mode.
+int_index_test/01: MissingCompileTimeError
+int_index_test/02: MissingCompileTimeError
 local_signature_test: RuntimeError # Test against function type variables is only supported in strong mode.
+switch_test/00: MissingCompileTimeError
 
 [ $compiler == dart2js && ($runtime == chrome || $runtime == chromeOnAndroid || $runtime == drt || $runtime == ff || $runtime == safari) ]
 isolate2_test/01: Fail # Issue 14458.
diff --git a/tests/compiler/dart2js_extra/deferred/deferred_class_test.dart b/tests/compiler/dart2js_extra/deferred/deferred_class_test.dart
index 22ab8ba..eb6c836 100644
--- a/tests/compiler/dart2js_extra/deferred/deferred_class_test.dart
+++ b/tests/compiler/dart2js_extra/deferred/deferred_class_test.dart
@@ -9,7 +9,7 @@
 
 import 'deferred_class_library.dart' deferred as lib;
 
-isError(e) => e is Error;
+bool isError(e) => e is Error;
 
 main() {
   var x;
diff --git a/tests/compiler/dart2js_extra/deferred/deferred_function_test.dart b/tests/compiler/dart2js_extra/deferred/deferred_function_test.dart
index 27d780a..88fcbaf 100644
--- a/tests/compiler/dart2js_extra/deferred/deferred_function_test.dart
+++ b/tests/compiler/dart2js_extra/deferred/deferred_function_test.dart
@@ -10,7 +10,7 @@
 
 import 'deferred_function_library.dart' deferred as lib;
 
-isError(e) => e is Error;
+bool isError(e) => e is Error;
 
 readFoo() {
   return lib.foo;
diff --git a/tests/compiler/dart2js_extra/deferred/deferred_mirrors1_lib.dart b/tests/compiler/dart2js_extra/deferred/deferred_mirrors1_lib.dart
deleted file mode 100644
index 92b9ede..0000000
--- a/tests/compiler/dart2js_extra/deferred/deferred_mirrors1_lib.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:typed_data';
-import 'dart:mirrors';
-
-foo() {
-  var m = reflect(499);
-  return m.reflectee;
-}
diff --git a/tests/compiler/dart2js_extra/deferred/deferred_mirrors1_test.dart b/tests/compiler/dart2js_extra/deferred/deferred_mirrors1_test.dart
deleted file mode 100644
index 10ed593..0000000
--- a/tests/compiler/dart2js_extra/deferred/deferred_mirrors1_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:async_helper/async_helper.dart';
-import 'package:expect/expect.dart';
-
-@MirrorsUsed(override: '*')
-import 'dart:mirrors';
-
-import 'deferred_mirrors1_lib.dart' deferred as lazy;
-
-main() {
-  asyncStart();
-
-  // The deferred library uses mirrors and has an unused import of typed_data.
-  // Dart2js must not crash on this test.
-  //
-  // Dart2js used to crash because:
-  // - the NativeInt8List was dragged in.
-  // - but not its constructors and the constructors' dependencies.
-  // - one of the dependencies (a local function "_ensureNativeList") was
-  //   not handled by the deferred-loader.
-  lazy.loadLibrary().then((_) {
-    Expect.equals(499, lazy.foo());
-    asyncEnd();
-  });
-}
diff --git a/tests/compiler/dart2js_extra/deferred/deferred_mirrors2_lazy.dart b/tests/compiler/dart2js_extra/deferred/deferred_mirrors2_lazy.dart
deleted file mode 100644
index 9bfdee8..0000000
--- a/tests/compiler/dart2js_extra/deferred/deferred_mirrors2_lazy.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library lazy;
-
-import 'deferred_mirrors2_lib3.dart';
-
-@MirrorsUsed(metaTargets: const [Reflectable], override: 'lazy')
-import 'dart:mirrors';
-
-class Reflectable {
-  const Reflectable();
-}
diff --git a/tests/compiler/dart2js_extra/deferred/deferred_mirrors2_lib3.dart b/tests/compiler/dart2js_extra/deferred/deferred_mirrors2_lib3.dart
deleted file mode 100644
index abbd6d0..0000000
--- a/tests/compiler/dart2js_extra/deferred/deferred_mirrors2_lib3.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library lib3;
-
-import 'deferred_mirrors2_lib4.dart';
-
-@MirrorsUsed(targets: const ['lib3'])
-import 'dart:mirrors';
-
-class R {
-  void bind(Type type) {
-    ClassMirror classMirror = _reflectClass(type);
-    MethodMirror ctor = classMirror.declarations[classMirror.simpleName];
-    int length = ctor.parameters.length;
-    Function create = classMirror.newInstance;
-  }
-}
diff --git a/tests/compiler/dart2js_extra/deferred/deferred_mirrors2_test.dart b/tests/compiler/dart2js_extra/deferred/deferred_mirrors2_test.dart
deleted file mode 100644
index 195c826..0000000
--- a/tests/compiler/dart2js_extra/deferred/deferred_mirrors2_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:async_helper/async_helper.dart';
-import 'package:expect/expect.dart';
-
-@MirrorsUsed(override: '*')
-import 'dart:mirrors';
-
-import 'deferred_mirrors2_lib2.dart';
-
-foo() {
-  ClassMirror classMirror = reflectType(int);
-  Expect.isTrue(classMirror.isTopLevel);
-}
-
-// This is a minimal test extracted from a bug-report we got.
-main() {
-  foo();
-}
diff --git a/tests/compiler/dart2js_extra/deferred/multiple_default_arg_test.dart b/tests/compiler/dart2js_extra/deferred/multiple_default_arg_test.dart
index 8d60600..37681b9 100644
--- a/tests/compiler/dart2js_extra/deferred/multiple_default_arg_test.dart
+++ b/tests/compiler/dart2js_extra/deferred/multiple_default_arg_test.dart
@@ -7,12 +7,8 @@
 /// fragments is kept separate, but that when they are loaded (and the metadata
 /// array is merged) all accesses to the metadata array is done correctly.
 ///
-/// This kind of metadata is generated either when using Function.apply (to
-/// store default values and parameter names) or when using dart:mirrors
-/// (annotations and unmangled names also need to be stored).
-///
-/// This test covers uses of default values and parameter names via
-/// Function.apply.
+/// This kind of metadata is generated when using Function.apply to
+/// store default values and parameter names.
 import 'multiple_default_arg_lib1.dart' deferred as lib1;
 import 'multiple_default_arg_lib2.dart' deferred as lib2;
 import 'multiple_default_arg_lib3.dart' deferred as lib3;
@@ -35,8 +31,8 @@
     await lib3.loadLibrary();
 
     Expect.equals(
-        Function
-            .apply(lib3.myFunction3, ["x", "y"], {#argumentName4: () => "C"}),
+        Function.apply(
+            lib3.myFunction3, ["x", "y"], {#argumentName4: () => "C"}),
         "x y 3b - C");
 
     Expect.equals(
@@ -48,8 +44,8 @@
             lib3.myFunction4, ["x", "y"], {#argumentName5: new lib3.X(4)}),
         4);
     Expect.equals(
-        Function
-            .apply(lib3.myFunction4, ["x", "y"], {#argumentName5: lib3.value3}),
+        Function.apply(
+            lib3.myFunction4, ["x", "y"], {#argumentName5: lib3.value3}),
         3);
   });
 }
diff --git a/tests/compiler/dart2js_extra/deferred/reflect_multiple_annotations_test.dart b/tests/compiler/dart2js_extra/deferred/reflect_multiple_annotations_test.dart
deleted file mode 100644
index 8a832d5..0000000
--- a/tests/compiler/dart2js_extra/deferred/reflect_multiple_annotations_test.dart
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/// This test is indirectly testing invariants of the generated code of dart2js.
-/// It ensures that indices to metadata information from **multiple** deferred
-/// fragments is kept separate, but that when they are loaded (and the metadata
-/// array is merged) all accesses to the metadata array is done correctly.
-///
-/// This kind of metadata is generated either when using Function.apply (to
-/// store default values and parameter names) or when using dart:mirrors
-/// (annotations and unmangled names also need to be stored).
-///
-/// This test file covers uses of annotations through dart:mirrors.
-@MirrorsUsed(override: '*')
-import 'dart:mirrors';
-import 'reflect_multiple_annotations_lib1.dart' deferred as lib1;
-import 'reflect_multiple_annotations_lib2.dart' deferred as lib2;
-import 'package:expect/expect.dart';
-import 'package:async_helper/async_helper.dart';
-
-main() {
-  asyncTest(() async {
-    await lib1.loadLibrary();
-    await lib2.loadLibrary();
-
-    MethodMirror m1 =
-        findTopLevel('multiple_annotations_lib1.dart', #myFunction1);
-    Expect.equals(m1.metadata.length, 2);
-
-    Expect.equals(m1.parameters.length, 1);
-    Expect.equals(m1.parameters[0].simpleName, #f1);
-    Expect.isFalse(m1.parameters[0].hasDefaultValue);
-    Expect.equals(m1.parameters[0].metadata.length, 1);
-
-    // Note: currently m1.metadata[*].reflectee is null, even though this works
-    // when not using deferred libraries.
-    // TODO(sigmund): fix if we do not move forward with Issue #30538.
-    //Expect.isTrue(lib1.MetaA.isCheck(m1.metadata[0].reflectee));
-    //Expect.isTrue(lib1.MetaA.isCheck(m1.metadata[1].reflectee));
-    //Expect.equals(m1.metadata[0].reflectee.value, "one");
-    //Expect.equals(m1.metadata[1].reflectee.value, lib1.topLevelF);
-    //Expect.isTrue(lib1.MetaA.isCheck(m1.parameters[0].metadata[0].reflectee));
-    //Expect.equals(m1.parameters[0].metadata[0].reflectee.value, "param");
-
-    LibraryMirror l2 = findLibrary('multiple_annotations_lib2.dart');
-    Expect.equals(l2.metadata.length, 1);
-    print(l2.metadata[0].reflectee);
-    Expect.equals(l2.metadata[0].reflectee.value, "lib");
-
-    ClassMirror c2 = findClass('multiple_annotations_lib2.dart', #A);
-    Expect.equals(c2.simpleName, #A);
-    Expect.equals(c2.metadata.length, 1);
-    print(c2.metadata[0].reflectee);
-    Expect.equals(c2.metadata[0].reflectee.value, "class");
-  });
-}
-
-MethodMirror findTopLevel(String uriSuffix, Symbol name) {
-  MethodMirror method;
-  currentMirrorSystem().libraries.forEach((uri, lib) {
-    if (uri.path.endsWith(uriSuffix)) method = lib.declarations[name];
-  });
-  return method;
-}
-
-ClassMirror findClass(String uriSuffix, Symbol name) {
-  ClassMirror cls;
-  currentMirrorSystem().libraries.forEach((uri, lib) {
-    if (uri.path.endsWith(uriSuffix)) cls = lib.declarations[name];
-  });
-  return cls;
-}
-
-LibraryMirror findLibrary(String uriSuffix) {
-  LibraryMirror lib;
-  currentMirrorSystem().libraries.forEach((uri, l) {
-    if (uri.path.endsWith(uriSuffix)) lib = l;
-  });
-  return lib;
-}
diff --git a/tests/compiler/dart2js_extra/deferred/reflect_multiple_default_arg_test.dart b/tests/compiler/dart2js_extra/deferred/reflect_multiple_default_arg_test.dart
deleted file mode 100644
index d82a02b..0000000
--- a/tests/compiler/dart2js_extra/deferred/reflect_multiple_default_arg_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/// This test is indirectly testing invariants of the generated code of dart2js.
-/// It ensures that indices to metadata information from **multiple** deferred
-/// fragments is kept separate, but that when they are loaded (and the metadata
-/// array is merged) all accesses to the metadata array is done correctly.
-///
-/// This kind of metadata is generated either when using Function.apply (to
-/// store default values and parameter names) or when using dart:mirrors
-/// (annotations and unmangled names also need to be stored).
-///
-/// This test file covers uses of parameter names and default values through
-/// dart:mirrors.
-@MirrorsUsed(override: '*')
-import 'dart:mirrors';
-import 'reflect_multiple_default_arg_lib1.dart' deferred as lib1;
-import 'reflect_multiple_default_arg_lib2.dart' deferred as lib2;
-import 'package:expect/expect.dart';
-import 'package:async_helper/async_helper.dart';
-
-main() {
-  asyncTest(() async {
-    await lib1.loadLibrary();
-    await lib2.loadLibrary();
-
-    Expect.equals(Function.apply(lib1.myFunction1, []), 1);
-    Expect.equals(Function.apply(lib2.myFunction2, []), 2);
-
-    MethodMirror m1 =
-        findTopLevel('multiple_default_arg_lib1.dart', #myFunction1);
-    Expect.equals(m1.parameters.length, 1);
-    Expect.equals(m1.parameters[0].simpleName, #argumentName1);
-    Expect.isTrue(m1.parameters[0].hasDefaultValue);
-    Expect.equals((m1.parameters[0].defaultValue.reflectee)(), 1);
-
-    MethodMirror m2 =
-        findTopLevel('multiple_default_arg_lib2.dart', #myFunction2);
-    Expect.equals(m2.parameters.length, 1);
-    Expect.equals(m2.parameters[0].simpleName, #argumentName2);
-    Expect.isTrue(m2.parameters[0].hasDefaultValue);
-    Expect.equals((m2.parameters[0].defaultValue.reflectee)(), 2);
-  });
-}
-
-MethodMirror findTopLevel(String uriSuffix, Symbol name) {
-  MethodMirror method;
-  currentMirrorSystem().libraries.forEach((uri, lib) {
-    if (uri.path.endsWith(uriSuffix)) method = lib.declarations[name];
-  });
-  print(method);
-  return method;
-}
diff --git a/tests/compiler/dart2js_extra/equals_test.dart b/tests/compiler/dart2js_extra/equals_test.dart
index 55cbc75..c4a5309 100644
--- a/tests/compiler/dart2js_extra/equals_test.dart
+++ b/tests/compiler/dart2js_extra/equals_test.dart
@@ -9,7 +9,7 @@
   } else {
     throw "x != x with x == 3";
   }
-  var y = x;
+  dynamic y = x;
   if (true) {
     y = 10;
   }
diff --git a/tests/compiler/dart2js_extra/expression_loop_call_test.dart b/tests/compiler/dart2js_extra/expression_loop_call_test.dart
deleted file mode 100644
index 2c33b97..0000000
--- a/tests/compiler/dart2js_extra/expression_loop_call_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/// Regression test for [ClosureCallSiteTypeInformation] in loops.
-
-class Class<T> {
-  method() {
-    for (var a in []) {
-      (T)(); //# 01: ok
-      (Object)(); //# 02: ok
-      (this)(); //# 03: ok
-      (1)(); //# 04: ok
-    }
-  }
-}
-
-main() {
-  new Class().method();
-}
diff --git a/tests/compiler/dart2js_extra/for_in_test.dart b/tests/compiler/dart2js_extra/for_in_test.dart
index 46093d8..8f0eb15 100644
--- a/tests/compiler/dart2js_extra/for_in_test.dart
+++ b/tests/compiler/dart2js_extra/for_in_test.dart
@@ -29,8 +29,8 @@
 class MyIterable<T> extends IterableBase<T> {
   final List<T> values;
   MyIterable(List<T> values) : this.values = values;
-  Iterator get iterator {
-    return new MyListIterator(values);
+  Iterator<T> get iterator {
+    return new MyListIterator<T>(values);
   }
 }
 
diff --git a/tests/compiler/dart2js_extra/if_null_test.dart b/tests/compiler/dart2js_extra/if_null_test.dart
index 2b25f43..ed3f23a5 100644
--- a/tests/compiler/dart2js_extra/if_null_test.dart
+++ b/tests/compiler/dart2js_extra/if_null_test.dart
@@ -9,12 +9,12 @@
 confuse(x) => x;
 
 main(args) {
-  var x = new A();
+  dynamic x = new A();
   var y;
 
   // Checks that inference doesn't incorrectly treat this as a normal
   // assignment (where only B is a possible value after the assignment).
-  var c = x ??= new B();
+  dynamic c = x ??= new B();
   var z = x;
   Expect.equals('a', x.m());
   Expect.equals('a', z.m());
diff --git a/tests/compiler/dart2js_extra/inference_nsm_mirrors_test.dart b/tests/compiler/dart2js_extra/inference_nsm_mirrors_test.dart
deleted file mode 100644
index 424f7ca..0000000
--- a/tests/compiler/dart2js_extra/inference_nsm_mirrors_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Regression test for dart2js that did type inferencing on parameters
-// whose type may change at runtime due to an invocation through
-// [InstanceMirror.delegate].
-
-@MirrorsUsed(targets: 'A')
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class A {
-  noSuchMethod(im) {
-    reflect(new B()).delegate(im);
-  }
-}
-
-class B {
-  foo(a) => a + 42;
-}
-
-main() {
-  Expect.equals(42, new B().foo(0));
-  // In checked mode we should get a type error. In unchecked mode it should be
-  // an argument error.
-  Expect.throws(
-      () => new A().foo('foo'), (e) => e is ArgumentError || e is TypeError);
-}
diff --git a/tests/compiler/dart2js_extra/inference_super_set_call_test.dart b/tests/compiler/dart2js_extra/inference_super_set_call_test.dart
index 5038ad7..4258546 100644
--- a/tests/compiler/dart2js_extra/inference_super_set_call_test.dart
+++ b/tests/compiler/dart2js_extra/inference_super_set_call_test.dart
@@ -17,7 +17,7 @@
 
 class S extends A {
   var _x; //      was bad: inferred as null, than [null | int]
-  var _y = ''; // was bad: inferred as String, rather than [String | int]
+  dynamic _y = ''; // was bad: inferred as String, rather than [String | int]
   var _z; //      was ok : inferred as [null | int]
 
   set x(v) {
diff --git a/tests/compiler/dart2js_extra/int_index_test.dart b/tests/compiler/dart2js_extra/int_index_test.dart
index 269124ce..629338b 100644
--- a/tests/compiler/dart2js_extra/int_index_test.dart
+++ b/tests/compiler/dart2js_extra/int_index_test.dart
@@ -4,9 +4,9 @@
 
 main() {
   var a = [0, 1];
-  a[1.2]; //                      //# 01: runtime error
-  a[1.2] = 4; //                  //# 02: runtime error
-  checkIndex(a, 1.4);             //# 03: runtime error
+  a[1.2]; //                      //# 01: compile-time error
+  a[1.2] = 4; //                  //# 02: compile-time error
+  checkIndex(a, 1.4); //# 03: runtime error
   checkIndexedAssignment(a, 1.4); //# 04: runtime error
   checkIndex(a, 0);
   checkIndexedAssignment(a, 0);
diff --git a/tests/compiler/dart2js_extra/invalid_annotation2_test.dart b/tests/compiler/dart2js_extra/invalid_annotation2_test.dart
deleted file mode 100644
index f8238c3..0000000
--- a/tests/compiler/dart2js_extra/invalid_annotation2_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Regression test for http://dartbug.com/23893/
-//
-// Because annotations are parsed lazily, dart2js used to crash when an
-// annotation had a syntax error.
-// This checks the same behavior as invalid_annotation_test.dart, except that we
-// use mirrors to trigger the error in the vm. This also triggers the error in
-// dart2js differently.
-
-@MirrorsUsed(targets: const [A])
-import 'dart:mirrors';
-
-@Deprecated("m"
-,, //                               //# 01: compile-time error
-    )
-class A {}
-
-main() {
-  reflectClass(A).metadata;
-}
diff --git a/tests/compiler/dart2js_extra/locals_test.dart b/tests/compiler/dart2js_extra/locals_test.dart
index 36fd7ca..3169124 100644
--- a/tests/compiler/dart2js_extra/locals_test.dart
+++ b/tests/compiler/dart2js_extra/locals_test.dart
@@ -3,9 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 void main() {
-  var hello = 'Hello';
-  var world = 'world';
-  var s = 0;
+  dynamic hello = 'Hello';
+  dynamic world = 'world';
+  dynamic s = 0;
   s = world;
   hello = 'Greetings';
   print("$hello, $world!");
diff --git a/tests/compiler/dart2js_extra/locate_single_element_1_test.dart b/tests/compiler/dart2js_extra/locate_single_element_1_test.dart
deleted file mode 100644
index 4291fe0..0000000
--- a/tests/compiler/dart2js_extra/locate_single_element_1_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test for locateSingleElement bug.
-
-import 'package:expect/expect.dart';
-
-class T {
-  foo() => 'T.foo'; // This is the single element.
-}
-
-class C implements T {
-  // There is a warning that C does not implement 'foo'.
-}
-
-@NoInline()
-@AssumeDynamic()
-assumeT(x) {
-  // returns inferred subtype(T).
-  if (x is T) return x;
-  throw "Not T";
-}
-
-var log = [];
-demo() {
-  log.add(new T()); // T is created.
-  var a = assumeT(new C()); // C is created.
-
-  // The call "a.foo()" should be a NoSuchMethodError, but a bug in
-  // locateSingleElement used to lead to T.foo being inlined.  There is a single
-  // method. T.foo, that matches subtype(T), but it should be rejected because
-  // not all instantiated classes that are subtype(T) have that method.
-  log.add(a.foo());
-}
-
-main() {
-  Expect.throws(demo);
-}
diff --git a/tests/compiler/dart2js_extra/many_constants_test.dart b/tests/compiler/dart2js_extra/many_constants_test.dart
index 3c8a663..f28e2ff 100644
--- a/tests/compiler/dart2js_extra/many_constants_test.dart
+++ b/tests/compiler/dart2js_extra/many_constants_test.dart
@@ -29,14 +29,14 @@
 const ll3 = const [1, 2, 8, 4, 5, 6, 7];
 const ll4 = const [1, 2, 3, 4, 8, 6, 7];
 
-const m1 = const {1: 1, 2: 2};
-const m2 = const {1: 2, 2: 1};
-const m3 = const {1: 1, 2: 1};
-const m4 = const {1: 2, 2: 2};
-const m5 = const {2: 1, 1: 2};
-const m6 = const {2: 2, 1: 1};
-const m7 = const {2: 1, 1: 1};
-const m8 = const {2: 2, 1: 2};
+const m1 = const <dynamic, dynamic>{1: 1, 2: 2};
+const m2 = const <dynamic, dynamic>{1: 2, 2: 1};
+const m3 = const <dynamic, dynamic>{1: 1, 2: 1};
+const m4 = const <dynamic, dynamic>{1: 2, 2: 2};
+const m5 = const <dynamic, dynamic>{2: 1, 1: 2};
+const m6 = const <dynamic, dynamic>{2: 2, 1: 1};
+const m7 = const <dynamic, dynamic>{2: 1, 1: 1};
+const m8 = const <dynamic, dynamic>{2: 2, 1: 2};
 const m9 = const <int, int>{1: 1, 2: 2};
 const mA = const <int, int>{1: 2, 2: 1};
 const mB = const <int, int>{1: 1, 2: 1};
diff --git a/tests/compiler/dart2js_extra/minus_zero2_test.dart b/tests/compiler/dart2js_extra/minus_zero2_test.dart
index 622678a..02cf9f0 100644
--- a/tests/compiler/dart2js_extra/minus_zero2_test.dart
+++ b/tests/compiler/dart2js_extra/minus_zero2_test.dart
@@ -12,7 +12,7 @@
   var list = [1, 2, 3];
   if (new DateTime.now().millisecondsSinceEpoch == 42) list[1] = 4;
   int sum = 0;
-  for (int i = -0.0; i < list.length; i++) {
+  for (num i = -0.0; i < list.length; i++) {
     sum += list[i];
   }
   Expect.equals(6, sum);
diff --git a/tests/compiler/dart2js_extra/minus_zero_test.dart b/tests/compiler/dart2js_extra/minus_zero_test.dart
index 987d7a2..3b52434 100644
--- a/tests/compiler/dart2js_extra/minus_zero_test.dart
+++ b/tests/compiler/dart2js_extra/minus_zero_test.dart
@@ -6,13 +6,14 @@
 
 import "package:expect/expect.dart";
 
-const double MINUS_ZERO = -0; //# 01: static type warning, checked mode compile-time error
+@NoInline()
+num minusZero() => -0;
 
 void main() {
   // Dart2js must not infer that the type-intersection of int and -0.0 is empty.
   // It must get an interceptor for the addition (`i += 3`), or use the native
   // JS + operation.
-  int i = MINUS_ZERO; //  //# 01: continued
-  i += 3; //              //# 01: continued
-  Expect.equals(3, i); // //# 01: continued
+  int i = minusZero();
+  i += 3;
+  Expect.equals(3, i);
 }
diff --git a/tests/compiler/dart2js_extra/mirror_enqueuer_regression_test.dart b/tests/compiler/dart2js_extra/mirror_enqueuer_regression_test.dart
deleted file mode 100644
index 5fd7b42..0000000
--- a/tests/compiler/dart2js_extra/mirror_enqueuer_regression_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Regression test for 'staged' reflection.  MirrorsUsed pulls in static
-// functions, that pulls in more reflection.  This used to trigger a bug in
-// Enqueuer where the second set of pulled in definitions were unresolved.
-
-@MirrorsUsed(targets: const ["foo"])
-import 'dart:mirrors';
-
-final foo = reflect(reflect(9)).getField(#getField);
-
-void main() {}
diff --git a/tests/compiler/dart2js_extra/mirror_invalid_field_access2_test.dart b/tests/compiler/dart2js_extra/mirror_invalid_field_access2_test.dart
deleted file mode 100644
index 0110cfb..0000000
--- a/tests/compiler/dart2js_extra/mirror_invalid_field_access2_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that we cannot reflect on elements not covered by the `MirrorsUsed`
-// annotation.
-
-library test;
-
-@MirrorsUsed(targets: 'C.foo')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class C {
-  var foo;
-  var bar;
-}
-
-main() {
-  var c = new C();
-
-  c.bar = 1;
-  var local = c.bar;
-
-  var mirror = reflect(c);
-  Expect.equals(1, mirror.setField(const Symbol('foo'), 1).reflectee);
-  Expect.equals(1, mirror.getField(const Symbol('foo')).reflectee);
-  Expect.throws(() => mirror.setField(const Symbol('bar'), 2),
-      (e) => e is NoSuchMethodError);
-  Expect.throws(() => mirror.getField(const Symbol('bar')),
-      (e) => e is NoSuchMethodError);
-}
diff --git a/tests/compiler/dart2js_extra/mirror_invalid_field_access3_test.dart b/tests/compiler/dart2js_extra/mirror_invalid_field_access3_test.dart
deleted file mode 100644
index 40d235f..0000000
--- a/tests/compiler/dart2js_extra/mirror_invalid_field_access3_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that we cannot reflect on elements not covered by the `MirrorsUsed`
-// annotation.
-
-library test;
-
-@MirrorsUsed(targets: 'C.foo')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class C {
-  static var foo;
-  static var bar;
-}
-
-main() {
-  C.bar = 1;
-  var local = C.bar;
-  var mirror = reflect(new C()).type; // Workaround bug 12799.
-  Expect.equals(1, mirror.setField(const Symbol('foo'), 1).reflectee);
-  Expect.equals(1, mirror.getField(const Symbol('foo')).reflectee);
-  Expect.throws(() => mirror.setField(const Symbol('bar'), 2),
-      (e) => e is NoSuchMethodError);
-  Expect.throws(() => mirror.getField(const Symbol('bar')),
-      (e) => e is NoSuchMethodError);
-}
diff --git a/tests/compiler/dart2js_extra/mirror_invalid_field_access4_test.dart b/tests/compiler/dart2js_extra/mirror_invalid_field_access4_test.dart
deleted file mode 100644
index ba3b1904..0000000
--- a/tests/compiler/dart2js_extra/mirror_invalid_field_access4_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that we cannot reflect on elements not covered by the `MirrorsUsed`
-// annotation.
-
-library test;
-
-@MirrorsUsed(targets: 'C.foo')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class C {
-  var foo;
-  var bar;
-}
-
-class D {
-  get bar {}
-  set bar(x) {}
-}
-
-int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
-
-main() {
-  var c = inscrutable(1) == 1 ? new C() : new D();
-
-  c.bar = 1;
-  var local = c.bar;
-
-  var mirror = reflect(c);
-  Expect.equals(1, mirror.setField(const Symbol('foo'), 1).reflectee);
-  Expect.equals(1, mirror.getField(const Symbol('foo')).reflectee);
-  Expect.throws(() => mirror.setField(const Symbol('bar'), 2),
-      (e) => e is NoSuchMethodError);
-  Expect.throws(() => mirror.getField(const Symbol('bar')),
-      (e) => e is NoSuchMethodError);
-}
diff --git a/tests/compiler/dart2js_extra/mirror_invalid_field_access_test.dart b/tests/compiler/dart2js_extra/mirror_invalid_field_access_test.dart
deleted file mode 100644
index 15e7099..0000000
--- a/tests/compiler/dart2js_extra/mirror_invalid_field_access_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that we cannot reflect on elements not covered by the `MirrorsUsed`
-// annotation.
-
-library test;
-
-@MirrorsUsed(targets: 'foo')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-var foo;
-var bar;
-
-main() {
-  bar = 1;
-  var local = bar;
-
-  var mirror = currentMirrorSystem().findLibrary(const Symbol('test'));
-  Expect.equals(1, mirror.setField(const Symbol('foo'), 1).reflectee);
-  Expect.equals(1, mirror.getField(const Symbol('foo')).reflectee);
-  Expect.throws(() => mirror.setField(const Symbol('bar'), 2),
-      (e) => e is NoSuchMethodError);
-  Expect.throws(() => mirror.getField(const Symbol('bar')),
-      (e) => e is NoSuchMethodError);
-}
diff --git a/tests/compiler/dart2js_extra/mirror_invalid_invoke2_test.dart b/tests/compiler/dart2js_extra/mirror_invalid_invoke2_test.dart
deleted file mode 100644
index 774c7280..0000000
--- a/tests/compiler/dart2js_extra/mirror_invalid_invoke2_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that we cannot reflect on elements not covered by the `MirrorsUsed`
-// annotation.
-
-library test;
-
-@MirrorsUsed(targets: 'C.foo')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-import '../../language/compiler_annotations.dart';
-
-class C {
-  foo() => 1;
-
-  @NoInline()
-  // Use a closure to prevent inlining until the annotation is implemented.
-  bar() => () => 2;
-}
-
-main() {
-  var c = new C();
-  c.bar(); // Call bar, so it is included in the program.
-
-  var mirror = reflect(c);
-  Expect.equals(1, mirror.invoke(const Symbol('foo'), []).reflectee);
-  Expect.throws(() => mirror.invoke(const Symbol('bar'), []),
-      (e) => e is NoSuchMethodError);
-}
diff --git a/tests/compiler/dart2js_extra/mirror_invalid_invoke3_test.dart b/tests/compiler/dart2js_extra/mirror_invalid_invoke3_test.dart
deleted file mode 100644
index 9ddd4e5..0000000
--- a/tests/compiler/dart2js_extra/mirror_invalid_invoke3_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that we cannot reflect on elements not covered by the `MirrorsUsed`
-// annotation.
-
-library test;
-
-@MirrorsUsed(targets: 'C.foo')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-import '../../language/compiler_annotations.dart';
-
-class C {
-  static foo() => 1;
-
-  @NoInline()
-  // Use a closure to prevent inlining until the annotation is implemented.
-  static bar() => () => 2;
-}
-
-main() {
-  C.bar(); // Call bar, so it is included in the program.
-
-  var mirror = reflect(new C()).type; // Workaround bug 12799.
-  Expect.equals(1, mirror.invoke(const Symbol('foo'), []).reflectee);
-  Expect.throws(() => mirror.invoke(const Symbol('bar'), []),
-      (e) => e is NoSuchMethodError);
-}
diff --git a/tests/compiler/dart2js_extra/mirror_invalid_invoke_test.dart b/tests/compiler/dart2js_extra/mirror_invalid_invoke_test.dart
deleted file mode 100644
index ea65a1e..0000000
--- a/tests/compiler/dart2js_extra/mirror_invalid_invoke_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that we cannot reflect on elements not covered by the `MirrorsUsed`
-// annotation.
-
-library test;
-
-@MirrorsUsed(targets: 'foo')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-import '../../language/compiler_annotations.dart';
-
-foo() => 1;
-
-@NoInline()
-// Use a closure to prevent inlining until the annotation is implemented.
-bar() => () => 2;
-
-main() {
-  bar(); // Call bar, so it is included in the program.
-
-  var lm = currentMirrorSystem().findLibrary(const Symbol('test'));
-  Expect.equals(1, lm.invoke(const Symbol('foo'), []).reflectee);
-  Expect.throws(() => lm.invoke(const Symbol('bar'), []));
-}
diff --git a/tests/compiler/dart2js_extra/mirror_printer_test.dart b/tests/compiler/dart2js_extra/mirror_printer_test.dart
deleted file mode 100644
index 9f5d5b7..0000000
--- a/tests/compiler/dart2js_extra/mirror_printer_test.dart
+++ /dev/null
@@ -1,189 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/// Prints all information about all mirrors. This tests that it is possible to
-/// enumerate all reflective information without crashing.
-
-// Note: Adding imports below is fine for regression tests. For example,
-// 'crash_library_metadata.dart' is imported to ensure the compiler doesn't
-// crash.
-
-// TODO(ahe): This test should be extended until we are sure all data is
-// printed.
-
-library test.mirror_printer_test;
-
-@MirrorsUsed(targets: '*')
-import 'dart:mirrors';
-
-import 'crash_library_metadata.dart'; // This would crash dart2js.
-
-// Importing dart:html to make things interesting.
-import 'dart:html'; //# 01: ok
-
-class MirrorPrinter {
-  final StringBuffer buffer;
-  final TypeMirror dynamicType = currentMirrorSystem().dynamicType;
-
-  int indentationLevel = 0;
-
-  MirrorPrinter(this.buffer);
-
-  void w(object) {
-    buffer.write(object);
-  }
-
-  n(Symbol symbol) => MirrorSystem.getName(symbol);
-
-  void indented(action) {
-    indentationLevel++;
-    action();
-    indentationLevel--;
-  }
-
-  get indent {
-    for (int i = 0; i < indentationLevel; i++) {
-      w('  ');
-    }
-  }
-
-  String stringifyInstance(InstanceMirror mirror) {
-    var reflectee = mirror.reflectee;
-    if (reflectee is String) return '"${reflectee}"';
-    if (reflectee is Null ||
-        reflectee is bool ||
-        reflectee is num ||
-        reflectee is List ||
-        reflectee is Map) {
-      return '$reflectee';
-    }
-    StringBuffer buffer = new StringBuffer();
-    Map<Symbol, DeclarationMirror> declarations = mirror.type.declarations;
-    buffer..write(n(mirror.type.simpleName))..write('(');
-    bool first = true;
-    declarations.forEach((Symbol name, DeclarationMirror declaration) {
-      if (declaration is! VariableMirror) return;
-      VariableMirror variable = declaration;
-      if (variable.isStatic) return;
-      // TODO(ahe): Include superclasses.
-      if (first) {
-        first = false;
-      } else {
-        buffer.write(', ');
-      }
-      buffer
-        ..write(n(name))
-        ..write(': ')
-        ..write(stringifyInstance(mirror.getField(name)));
-    });
-    buffer.write(')');
-    return buffer.toString();
-  }
-
-  String stringifyMetadata(InstanceMirror mirror) {
-    return '@${stringifyInstance(mirror)}';
-  }
-
-  bool writeType(TypeMirror mirror) {
-    if (mirror == null || mirror == dynamicType) return false;
-    w('${n(mirror.simpleName)} ');
-    return true;
-  }
-
-  writeVariable(VariableMirror mirror) {
-    bool needsVar = true;
-    if (mirror.isStatic) w('static ');
-    // TODO(ahe): What about const?
-    if (mirror.isFinal) {
-      w('final ');
-      needsVar = false;
-    }
-
-    if (writeType(mirror.type)) needsVar = false;
-
-    if (needsVar) {
-      w('var ');
-    }
-    w('${n(mirror.simpleName)};');
-  }
-
-  writeMethod(MethodMirror mirror) {
-    writeType(mirror.returnType);
-    if (mirror.isOperator) {
-      w('operator ');
-    }
-    if (mirror.isGetter) {
-      w('get ');
-    }
-    if (mirror.isSetter) {
-      w('set ');
-    }
-    w('${n(mirror.simpleName)}');
-    if (!mirror.isGetter) {
-      w('()');
-    }
-    w(';');
-  }
-
-  writeClass(ClassMirror mirror) {
-    // TODO(ahe): Write 'abstract' if [mirror] is abstract.
-    w('class ${n(mirror.simpleName)}');
-    // TODO(ahe): Write superclass and interfaces.
-    w(' {');
-    bool first = true;
-    indented(() {
-      for (DeclarationMirror declaration in mirror.declarations.values) {
-        if (first) {
-          first = false;
-        } else {
-          w('\n');
-        }
-        writeDeclaration(declaration);
-      }
-    });
-    w('\n}\n');
-  }
-
-  writeDeclaration(DeclarationMirror declaration) {
-    w('\n');
-    var metadata = declaration.metadata;
-    if (!metadata.isEmpty) {
-      indent;
-      buffer.writeAll(metadata.map(stringifyMetadata), ' ');
-      w('\n');
-    }
-    indent;
-    if (declaration is ClassMirror) {
-      writeClass(declaration);
-    } else if (declaration is VariableMirror) {
-      writeVariable(declaration);
-    } else if (declaration is MethodMirror) {
-      writeMethod(declaration);
-    } else {
-      // TODO(ahe): Test other subclasses of DeclarationMirror.
-      w('$declaration');
-    }
-  }
-
-  writeLibrary(LibraryMirror library) {
-    w('library ${n(library.simpleName)};\n\n');
-    library.declarations.values
-        .where((d) => d is! TypeMirror)
-        .forEach(writeDeclaration);
-    w('\n');
-  }
-
-  static StringBuffer stringify(Map<Uri, LibraryMirror> libraries) {
-    StringBuffer buffer = new StringBuffer();
-    libraries.values.forEach(new MirrorPrinter(buffer).writeLibrary);
-    return buffer;
-  }
-}
-
-main() {
-  print(MirrorPrinter.stringify(currentMirrorSystem().libraries));
-  // Clear the nodes to avoid confusing the fine test framework (by "fine" I
-  // mean something else) -- ahe.
-  document.body.nodes.clear(); //# 01: continued
-}
diff --git a/tests/compiler/dart2js_extra/mirror_test.dart b/tests/compiler/dart2js_extra/mirror_test.dart
deleted file mode 100644
index 5c4e452..0000000
--- a/tests/compiler/dart2js_extra/mirror_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import "package:expect/expect.dart";
-import 'dart:mirrors';
-
-void main() {
-  var now = new DateTime.now();
-  InstanceMirror mirror = reflect(now);
-  print('now: ${now}');
-  print('mirror.type: ${mirror.type}');
-  print('now.toUtc(): ${now.toUtc()}');
-
-  var value = mirror.invoke(const Symbol("toUtc"), []);
-  print('mirror.invoke("toUtc", []): $value');
-  Expect.isTrue(value.hasReflectee);
-  Expect.equals(now.toUtc(), value.reflectee);
-}
diff --git a/tests/compiler/dart2js_extra/mirror_type_inference_field2_test.dart b/tests/compiler/dart2js_extra/mirror_type_inference_field2_test.dart
deleted file mode 100644
index ee6b26f..0000000
--- a/tests/compiler/dart2js_extra/mirror_type_inference_field2_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that type inference sees the possible modification of `fisk` from
-// the mirror system and not infers the value to be an integer, or any
-// other elements that use `fisk` like `otherFisk` to be of type integer.
-library test;
-
-@MirrorsUsed(targets: 'fisk', override: '*')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-var fisk = 1;
-var otherFisk = 42;
-
-main() {
-  var lm = currentMirrorSystem().findLibrary(const Symbol('test'));
-  lm.setField(const Symbol('fisk'), 'hest');
-  otherFisk = fisk;
-  Expect.isTrue(otherFisk is String);
-}
diff --git a/tests/compiler/dart2js_extra/mirror_type_inference_field_test.dart b/tests/compiler/dart2js_extra/mirror_type_inference_field_test.dart
deleted file mode 100644
index fcf0641..0000000
--- a/tests/compiler/dart2js_extra/mirror_type_inference_field_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that type inference sees the possible modification of `fisk` from
-// the mirror system and not infers the value to be an integer.
-library test;
-
-@MirrorsUsed(targets: 'fisk', override: '*')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-var fisk = 1;
-
-main() {
-  var lm = currentMirrorSystem().findLibrary(const Symbol('test'));
-  lm.setField(const Symbol('fisk'), 'hest');
-  Expect.isTrue(fisk is String);
-}
diff --git a/tests/compiler/dart2js_extra/mirror_type_inference_function_test.dart b/tests/compiler/dart2js_extra/mirror_type_inference_function_test.dart
deleted file mode 100644
index c7488f4..0000000
--- a/tests/compiler/dart2js_extra/mirror_type_inference_function_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that type inference sees the call to `fisk` from the mirror system
-// and not infers the argument to be an integer.
-library test;
-
-@MirrorsUsed(targets: 'fisk', override: '*')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-bool fisk(a) => a is int;
-
-main() {
-  Expect.isTrue(fisk(1));
-  var lm = currentMirrorSystem().findLibrary(const Symbol('test'));
-  Expect.isFalse(lm.invoke(const Symbol('fisk'), ['hest']).reflectee);
-}
diff --git a/tests/compiler/dart2js_extra/mirrors_declarations_filtering_test.dart b/tests/compiler/dart2js_extra/mirrors_declarations_filtering_test.dart
deleted file mode 100644
index 08ec7a2..0000000
--- a/tests/compiler/dart2js_extra/mirrors_declarations_filtering_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Regression test for the dart2js mirrors implementation that triggers the
-// generation of the declarations of a class in the presence of call stubs
-// and non-reflectable methods. For neither of the latter an instance mirror
-// should be constructed and they should not be contained in declarations.
-@MirrorsUsed(metaTargets: "Meta")
-import "dart:mirrors";
-import "package:expect/expect.dart";
-
-class Meta {
-  const Meta();
-}
-
-class A {
-  @Meta()
-  reflectableThing(int a, [int b = 9, int c = 42]) => a + b + c;
-  nonReflectableThing(int a, [int b = 4, int c = 21]) => a + b + c;
-}
-
-tryCall(object, symbol, values, expected) {
-  var mirror = reflect(object);
-  var result = mirror.invoke(symbol, values).reflectee;
-  Expect.equals(result, expected);
-}
-
-@NoInline()
-@AssumeDynamic()
-hide(x) => x;
-
-main() {
-  var a = hide(new A());
-  // Make sure we statically have some calls to reflectableThing with 1, 2 and
-  // 3 arguments so that stubs are generated.
-  Expect.equals(1 + 9 + 42, a.reflectableThing(1));
-  Expect.equals(1 + 5 + 42, a.reflectableThing(1, 5));
-  Expect.equals(1 + 22 + 3, a.reflectableThing(1, 22, 3));
-  // Try calling methods through reflection.
-  tryCall(a, #reflectableThing, [1], 1 + 9 + 42);
-  tryCall(a, #reflectableThing, [1, 5], 1 + 5 + 42);
-  tryCall(a, #reflectableThing, [1, 22, 3], 1 + 22 + 3);
-  Expect.throws(() => tryCall(a, #nonReflectableThing, [1], 1 + 4 + 21));
-  Expect.throws(() => tryCall(a, #nonReflectableThing, [1, 5], 1 + 5 + 21));
-  Expect.throws(() => tryCall(a, #nonReflectableThing, [1, 13, 7], 1 + 13 + 7));
-  // Trigger generation of all declarations and check they only contain a
-  // a single entry.
-  var declarations = reflect(a).type.declarations;
-  Expect.equals(1, declarations.keys.length);
-  Expect.equals(#reflectableThing, declarations.keys.first);
-}
diff --git a/tests/compiler/dart2js_extra/mirrors_used_closure_test.dart b/tests/compiler/dart2js_extra/mirrors_used_closure_test.dart
deleted file mode 100644
index 8f5dc8e..0000000
--- a/tests/compiler/dart2js_extra/mirrors_used_closure_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library MirrorsTest;
-
-import 'package:expect/expect.dart';
-
-@MirrorsUsed(targets: const ['A.foo', 'B.bar'])
-import 'dart:mirrors';
-
-class A {
-  foo() => 42;
-  bar() => 499;
-}
-
-class B {
-  bar() => 33;
-}
-
-@NoInline()
-@AssumeDynamic()
-confuse(x) => x;
-
-main() {
-  var f = [new A(), new B()][confuse(0)].bar;
-  Expect.throws(
-      () => reflect(f).invoke(#call, [], {}), (e) => e is UnsupportedError);
-}
diff --git a/tests/compiler/dart2js_extra/mirrors_used_metatargets_test.dart b/tests/compiler/dart2js_extra/mirrors_used_metatargets_test.dart
deleted file mode 100644
index 54513d9..0000000
--- a/tests/compiler/dart2js_extra/mirrors_used_metatargets_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-@MirrorsUsed(metaTargets: 'X')
-import 'dart:mirrors';
-
-const x = const X();
-
-class X {
-  const X();
-}
-
-@x
-class Y {
-  foo() => 42;
-}
-
-class Z {
-  foo() => 99;
-
-  @X()
-  bar() => 87;
-}
-
-main() {
-  var y = new Y();
-  var z = new Z();
-
-  if (reflect(y).invoke(#foo, []).reflectee != 42) throw 'Wrong Y.foo';
-  if (reflect(z).invoke(#bar, []).reflectee != 87) throw 'Wrong Z.bar';
-
-  bool caught = false;
-  try {
-    reflect(z).invoke(#foo, []);
-  } on UnsupportedError catch (e) {
-    caught = true;
-  }
-  if (!caught) throw 'Wrong Z.foo';
-}
diff --git a/tests/compiler/dart2js_extra/mirrors_used_native_test.dart b/tests/compiler/dart2js_extra/mirrors_used_native_test.dart
deleted file mode 100644
index 85dbb35..0000000
--- a/tests/compiler/dart2js_extra/mirrors_used_native_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-@MirrorsUsed(targets: 'List')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-main() {
-  Expect.equals(3, reflect([1, 2, 3]).getField(#length).reflectee);
-  Expect.throws(() => reflect({"hest": 42}).getField(#length),
-      (e) => e is UnsupportedError);
-}
diff --git a/tests/compiler/dart2js_extra/mirrors_used_warning2_test.dart b/tests/compiler/dart2js_extra/mirrors_used_warning2_test.dart
deleted file mode 100644
index 699595a..0000000
--- a/tests/compiler/dart2js_extra/mirrors_used_warning2_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:mirrors';
-import 'dart:async';
-
-import 'package:expect/expect.dart';
-
-class A {
-  noSuchMethod(Invocation invocation) {
-    return MirrorSystem.getName(invocation.memberName);
-  }
-}
-
-var lines = [];
-capturePrint(Zone self, ZoneDelegate parent, Zone origin, line) {
-  lines.add(line);
-}
-
-runTests() {
-  // No MirrorsUsed annotation anywhere.
-  // Dart2js should retain all symbols.
-  Expect.equals("foo", new A().foo);
-  Expect.isTrue(lines.isEmpty);
-  var barResult = new A().bar;
-  Expect.equals("bar", barResult);
-  Expect.isTrue(lines.isEmpty);
-}
-
-main() {
-  runZoned(runTests,
-      zoneSpecification: new ZoneSpecification(print: capturePrint));
-}
diff --git a/tests/compiler/dart2js_extra/mirrors_used_warning_test.dart b/tests/compiler/dart2js_extra/mirrors_used_warning_test.dart
deleted file mode 100644
index 626c0df..0000000
--- a/tests/compiler/dart2js_extra/mirrors_used_warning_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-@MirrorsUsed(symbols: 'foo')
-import 'dart:mirrors';
-import 'dart:async';
-
-import 'package:expect/expect.dart';
-
-class A {
-  noSuchMethod(Invocation invocation) {
-    return MirrorSystem.getName(invocation.memberName);
-  }
-}
-
-var lines = [];
-capturePrint(Zone self, ZoneDelegate parent, Zone origin, line) {
-  lines.add(line);
-}
-
-runTests() {
-  // "foo" is in MirrorsUsed and should therefore always work.
-  Expect.equals("foo", new A().foo);
-  Expect.isTrue(lines.isEmpty);
-  var barResult = new A().bar;
-  Expect.equals("bar", barResult); //         //# minif: ok
-
-  Expect.isTrue(lines.length == 1);
-  var line = lines.first;
-  Expect.isTrue(line.contains("Warning") &&
-      line.contains("bar") && //              //# minif: continued
-      line.contains("minif"));
-}
-
-main() {
-  runZoned(runTests,
-      zoneSpecification: new ZoneSpecification(print: capturePrint));
-}
diff --git a/tests/compiler/dart2js_extra/no_such_method_mirrors_test.dart b/tests/compiler/dart2js_extra/no_such_method_mirrors_test.dart
deleted file mode 100644
index 7719974..0000000
--- a/tests/compiler/dart2js_extra/no_such_method_mirrors_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class A {
-  noSuchMethod(im) {
-    reflect(new B()).delegate(im);
-  }
-}
-
-class B {}
-
-main() {
-  // Test with an intercepted selector.
-  Expect.throws(() => new A().startsWith(42), (e) => e is NoSuchMethodError);
-  // Test with a non-intercepted selector.
-  Expect.throws(() => new A().foobar(), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/compiler/dart2js_extra/operator2_test.dart b/tests/compiler/dart2js_extra/operator2_test.dart
index 4adff2d..7d43fb0 100644
--- a/tests/compiler/dart2js_extra/operator2_test.dart
+++ b/tests/compiler/dart2js_extra/operator2_test.dart
@@ -93,7 +93,7 @@
 void divTest() {
   var m1 = 0.0 - 1.0;
   var m2 = 0 - 2;
-  var x = two();
+  num x = two();
   x /= 2;
   Expect.equals(1.0, x);
   x /= 2;
diff --git a/tests/compiler/dart2js_extra/operator_equals_test.dart b/tests/compiler/dart2js_extra/operator_equals_test.dart
index becbdd3..6d73309 100644
--- a/tests/compiler/dart2js_extra/operator_equals_test.dart
+++ b/tests/compiler/dart2js_extra/operator_equals_test.dart
@@ -13,7 +13,7 @@
 }
 
 main() {
-  var a = new AlwaysTrue();
+  dynamic a = new AlwaysTrue();
   Expect.isTrue(a == 2);
   Expect.isFalse(a == null);
   Expect.isFalse(a != 2);
diff --git a/tests/compiler/dart2js_extra/optional_parameter_test.dart b/tests/compiler/dart2js_extra/optional_parameter_test.dart
index bb9ac6f..48418fb 100644
--- a/tests/compiler/dart2js_extra/optional_parameter_test.dart
+++ b/tests/compiler/dart2js_extra/optional_parameter_test.dart
@@ -24,7 +24,7 @@
   Expect.equals(null, a.foo());
   Expect.equals(null, a.bar(42));
   Expect.equals(42, a.bar(null, 42));
-  Expect.equals(0, a.foo(1, 2));
-  Expect.equals(0, a.bar());
-  Expect.equals(0, a.bar(1, 2, 3));
+  Expect.equals(0, (a as dynamic).foo(1, 2));
+  Expect.equals(0, (a as dynamic).bar());
+  Expect.equals(0, (a as dynamic).bar(1, 2, 3));
 }
diff --git a/tests/compiler/dart2js_extra/reflect_native_types_test.dart b/tests/compiler/dart2js_extra/reflect_native_types_test.dart
deleted file mode 100644
index eb2cb35..0000000
--- a/tests/compiler/dart2js_extra/reflect_native_types_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that reflection works on intercepted types.
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-main() {
-  // Make sure that reflecting on values of intercepted/native classes does
-  // not crash.
-  var intMembers = reflect(123).type.instanceMembers;
-  Expect.isTrue(intMembers.containsKey(#compareTo));
-  Expect.isTrue(intMembers.length > 15);
-  var listMembers = reflect([]).type.instanceMembers;
-  Expect.isTrue(listMembers.containsKey(#join));
-  Expect.isTrue(listMembers.length > 15);
-  var stringMembers = reflect('hest').type.instanceMembers;
-  Expect.isTrue(stringMembers.containsKey(#contains));
-  Expect.isTrue(stringMembers.length > 15);
-}
diff --git a/tests/compiler/dart2js_extra/regress/4740_library.dart b/tests/compiler/dart2js_extra/regress/4740_library.dart
deleted file mode 100644
index 709991f..0000000
--- a/tests/compiler/dart2js_extra/regress/4740_library.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library _4740_library;
-
-class Foo {
-  Foo._internal();
-}
diff --git a/tests/compiler/dart2js_extra/regress/4740_test.dart b/tests/compiler/dart2js_extra/regress/4740_test.dart
deleted file mode 100644
index a32a7b9..0000000
--- a/tests/compiler/dart2js_extra/regress/4740_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import "package:expect/expect.dart";
-
-import '4740_library.dart';
-
-main() {
-  Expect.throws(() => new Foo._internal(), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/compiler/dart2js_extra/regress_32069_test.dart b/tests/compiler/dart2js_extra/regress_32069_test.dart
index 4f13dfc..23a0aff 100644
--- a/tests/compiler/dart2js_extra/regress_32069_test.dart
+++ b/tests/compiler/dart2js_extra/regress_32069_test.dart
@@ -6,8 +6,8 @@
 
 main() {
   var m1 = {
-    'hello': ['hi', 'howdy'],
-    'bye': []
+    'hello': <String>['hi', 'howdy'],
+    'bye': <String>[]
   };
   var m = new Map<String, List<String>>.unmodifiable(m1);
   print(m);
diff --git a/tests/compiler/dart2js_extra/switch_test.dart b/tests/compiler/dart2js_extra/switch_test.dart
index 03a55e1..7fbc9d0 100644
--- a/tests/compiler/dart2js_extra/switch_test.dart
+++ b/tests/compiler/dart2js_extra/switch_test.dart
@@ -75,8 +75,10 @@
   switch (val) {
     case 1:
       return 100;
-    case 2:
+    case 2: _throw(); //# 00: compile-time error
+    case 3:
       _throw();
+      break;
     default:
       return 300;
   }
diff --git a/tests/compiler/dart2js_extra/type_error_message_test.dart b/tests/compiler/dart2js_extra/type_error_message_test.dart
index e3f3f90..d097577 100644
--- a/tests/compiler/dart2js_extra/type_error_message_test.dart
+++ b/tests/compiler/dart2js_extra/type_error_message_test.dart
@@ -9,9 +9,9 @@
 
 class C<T, S> {}
 
-bool inCheckedMode() {
+bool inComplianceMode() {
   try {
-    int i = 'hest';
+    int i = ('hest' as dynamic);
   } catch (e) {
     return true;
   }
@@ -19,10 +19,10 @@
 }
 
 main() {
-  if (inCheckedMode()) {
+  if (inComplianceMode()) {
     bool caught = false;
     try {
-      C<String, String> x = new C<C<int, String>, String>();
+      C<String, String> x = (new C<C<int, String>, String>()) as dynamic;
     } catch (e) {
       String nameOfC = (C).toString();
       String nameOfInt = (int).toString();
diff --git a/tests/compiler/dart2js_extra/variable_type_test.dart b/tests/compiler/dart2js_extra/variable_type_test.dart
deleted file mode 100644
index 500a70b..0000000
--- a/tests/compiler/dart2js_extra/variable_type_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-int foo(int i) {
-  i = 'fisk'; // //# 01: static type warning
-  return 'kat'; // //# 02: static type warning, dynamic type error
-}
-
-main() {
-  foo(42);
-  foo('hest'); // //# 03: static type warning
-}
diff --git a/tests/compiler/dart2js_native/compute_this_script_test.dart b/tests/compiler/dart2js_native/compute_this_script_test.dart
index fcf4539..8519bc4 100644
--- a/tests/compiler/dart2js_native/compute_this_script_test.dart
+++ b/tests/compiler/dart2js_native/compute_this_script_test.dart
@@ -11,6 +11,6 @@
   // of our test runner, but I can think of no other way to test this.
   // -- ahe
   if (!thisScript.endsWith('/out.js')) {
-    throw 'Unexpected script: "$thiscript"';
+    throw 'Unexpected script: "$thisScript"';
   }
 }
diff --git a/tests/compiler/dart2js_native/core_type_check_native_test.dart b/tests/compiler/dart2js_native/core_type_check_native_test.dart
index c1411b6..6356192 100644
--- a/tests/compiler/dart2js_native/core_type_check_native_test.dart
+++ b/tests/compiler/dart2js_native/core_type_check_native_test.dart
@@ -8,13 +8,19 @@
 class A {}
 
 @Native("B")
-class B implements Comparable {}
+class B implements Comparable {
+  noSuchMethod(m) => super.noSuchMethod(m);
+}
 
 @Native("C")
-class C implements Pattern {}
+class C implements Pattern {
+  noSuchMethod(m) => super.noSuchMethod(m);
+}
 
 @Native("D")
-class D implements Pattern, Comparable {}
+class D implements Pattern, Comparable {
+  noSuchMethod(m) => super.noSuchMethod(m);
+}
 
 makeA() native;
 makeB() native;
diff --git a/tests/compiler/dart2js_native/dart2js_native.status b/tests/compiler/dart2js_native/dart2js_native.status
index 56edcef..8ad400d 100644
--- a/tests/compiler/dart2js_native/dart2js_native.status
+++ b/tests/compiler/dart2js_native/dart2js_native.status
@@ -5,17 +5,13 @@
 [ $compiler == dart2js ]
 bound_closure_super_test: RuntimeError
 fake_thing_test: RuntimeError # Issue 13010
-mirror_intercepted_field_test: SkipByDesign # mirrors not supported
-native_mirror_test: SkipByDesign # mirrors not supported
-native_no_such_method_exception3_frog_test: SkipByDesign # mirrors not supported
-native_no_such_method_exception4_frog_test: SkipByDesign # mirrors not supported
-native_no_such_method_exception5_frog_test: SkipByDesign # mirrors not supported
 
 [ $browser ]
 *: Skip
 
-[ $compiler == dart2js && $checked ]
+[ $compiler == dart2js && $checked && !$strong ]
 error_safeToString_test: RuntimeError # Fix for Issue 33627 disabled native class sharing
+native_method_inlining_test: RuntimeError
 
 [ $compiler == dart2js && $fasta ]
 native_library_same_name_used_frog_test: CompileTimeError
@@ -26,3 +22,7 @@
 
 [ $compiler == dart2js && $minified ]
 optimization_hints_test: RuntimeError, OK # Test relies on unminified names.
+
+[ $compiler == dart2js && $strong ]
+error_safeToString_test: RuntimeError # Fix for Issue 33627 disabled native class sharing
+native_checked_fields_frog_test: RuntimeError
diff --git a/tests/compiler/dart2js_native/downcast_test.dart b/tests/compiler/dart2js_native/downcast_test.dart
index 0727b1b..ab74f5f 100644
--- a/tests/compiler/dart2js_native/downcast_test.dart
+++ b/tests/compiler/dart2js_native/downcast_test.dart
@@ -10,7 +10,7 @@
 
 abstract class I extends J {
   I read();
-  write(I x);
+  write(covariant I x);
 }
 
 // Native implementation.
diff --git a/tests/compiler/dart2js_native/fake_thing_test.dart b/tests/compiler/dart2js_native/fake_thing_test.dart
index 2761a90..0131821 100644
--- a/tests/compiler/dart2js_native/fake_thing_test.dart
+++ b/tests/compiler/dart2js_native/fake_thing_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import "package:expect/expect.dart";
+import "dart:_foreign_helper" show JS;
 
 // Test that native objects cannot accidentally or maliciously be mistaken for
 // Dart objects.
@@ -20,7 +21,7 @@
 (function(){
   function A() {}
   A.prototype.$isThing = true;
-  make1 = function(){return new A;};
+  make1 = function(){return new A();};
   make2 = function(){return {$isThing: true}};
 })()""");
 }
diff --git a/tests/compiler/dart2js_native/inference_of_helper_methods_test.dart b/tests/compiler/dart2js_native/inference_of_helper_methods_test.dart
index ef29951..3185f05 100644
--- a/tests/compiler/dart2js_native/inference_of_helper_methods_test.dart
+++ b/tests/compiler/dart2js_native/inference_of_helper_methods_test.dart
@@ -5,9 +5,9 @@
 import 'native_testing.dart';
 import 'dart:_js_helper' show intTypeCheck;
 
-bool get inCheckedMode {
+bool get inComplianceMode {
   try {
-    String a = 42;
+    String a = (42 as dynamic);
   } on TypeError catch (e) {
     return true;
   }
@@ -25,7 +25,7 @@
   // implementing checked mode semantics (like in the check below),
   // the check won't fail at runtime.
   intTypeCheck(42);
-  if (inCheckedMode) {
+  if (inComplianceMode) {
     int value;
     Expect.throws(() => value = a[1], (e) => e is TypeError);
   }
diff --git a/tests/compiler/dart2js_native/mirror_intercepted_field_test.dart b/tests/compiler/dart2js_native/mirror_intercepted_field_test.dart
deleted file mode 100644
index 4a3b337..0000000
--- a/tests/compiler/dart2js_native/mirror_intercepted_field_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:mirrors';
-import 'native_testing.dart';
-
-@Native("B")
-class B {
-  // Having this field in a native class will generate accessors with
-  // the interceptor calling convention.
-  var f;
-}
-
-class A {
-  int f;
-}
-
-const symF = const Symbol('f');
-
-main() {
-  JS('B', '(null)'); // B appears to be created.
-  var a = new A();
-
-  InstanceMirror mirror = reflect(a);
-  mirror.setField(symF, 42);
-  Expect.equals(42, a.f);
-
-  mirror = mirror.getField(symF);
-  Expect.equals(42, mirror.reflectee);
-}
diff --git a/tests/compiler/dart2js_native/native_call_arity1_frog_test.dart b/tests/compiler/dart2js_native/native_call_arity1_frog_test.dart
index 09db0f2..f590001 100644
--- a/tests/compiler/dart2js_native/native_call_arity1_frog_test.dart
+++ b/tests/compiler/dart2js_native/native_call_arity1_frog_test.dart
@@ -66,17 +66,17 @@
   A a = makeA();
   B b = makeB();
 
-  Expect.throws(() => a.foo());
+  Expect.throws(() => (a as dynamic).foo());
   Expect.equals(1, a.foo(10));
-  Expect.throws(() => a.foo(10, 20));
-  Expect.throws(() => a.foo(10, 20, 30));
+  Expect.throws(() => (a as dynamic).foo(10, 20));
+  Expect.throws(() => (a as dynamic).foo(10, 20, 30));
 
   Expect.equals(0, b.foo());
   Expect.equals(1, b.foo(10));
   Expect.equals(2, b.foo(10, 20));
   Expect.equals(3, b.foo(10, 20, 30));
 
-  Expect.throws(() => b.foo(10, 20, 30, 40));
+  Expect.throws(() => (b as dynamic).foo(10, 20, 30, 40));
 }
 
 main() {
diff --git a/tests/compiler/dart2js_native/native_call_arity2_frog_test.dart b/tests/compiler/dart2js_native/native_call_arity2_frog_test.dart
index f1289ff..1646809 100644
--- a/tests/compiler/dart2js_native/native_call_arity2_frog_test.dart
+++ b/tests/compiler/dart2js_native/native_call_arity2_frog_test.dart
@@ -78,20 +78,16 @@
   Expect.equals(0, a.foo());
   Expect.equals(1, a.foo(10));
   Expect.equals(2, a.foo(10, 20));
-  Expect.throws(() => a.foo(10, 20, 30));
 
   Expect.equals(1, a.foo(10));
   Expect.equals(2, a.foo(null, 20));
-  Expect.throws(() => a.foo(10, 20, 30));
 
   Expect.equals(0, b.foo());
   Expect.equals(1, b.foo(10));
   Expect.equals(2, b.foo(10, 20));
-  Expect.throws(() => b.foo(10, 20, 30));
 
   Expect.equals(1, b.foo(10));
   Expect.equals(2, b.foo(null, 20));
-  Expect.throws(() => b.foo(10, 20, 30));
 }
 
 main() {
diff --git a/tests/compiler/dart2js_native/native_call_arity3_frog_test.dart b/tests/compiler/dart2js_native/native_call_arity3_frog_test.dart
index cd7996b..3be4585 100644
--- a/tests/compiler/dart2js_native/native_call_arity3_frog_test.dart
+++ b/tests/compiler/dart2js_native/native_call_arity3_frog_test.dart
@@ -65,10 +65,7 @@
   A a = makeA();
   B b = makeB();
 
-  Expect.throws(() => a.foo());
   Expect.equals(1, a.foo(10));
-  Expect.throws(() => a.foo(10, 20));
-  Expect.throws(() => a.foo(10, 20, 30));
 
   Expect.equals(0, b.foo());
   Expect.equals(1, b.foo(10));
@@ -78,7 +75,6 @@
   Expect.equals(1, b.foo(10));
   Expect.equals(2, b.foo(null, 20));
   Expect.equals(3, b.foo(null, null, 30));
-  Expect.throws(() => b.foo(10, 20, 30, 40));
 }
 
 main() {
diff --git a/tests/compiler/dart2js_native/native_checked_arguments1_frog_test.dart b/tests/compiler/dart2js_native/native_checked_arguments1_frog_test.dart
index ef2d077..ddce60e 100644
--- a/tests/compiler/dart2js_native/native_checked_arguments1_frog_test.dart
+++ b/tests/compiler/dart2js_native/native_checked_arguments1_frog_test.dart
@@ -50,8 +50,8 @@
   Expect.isTrue(threw);
 }
 
-checkedModeTest() {
-  var things = [makeA(), makeB()];
+complianceModeTest() {
+  var things = <dynamic>[makeA(), makeB()];
   var a = things[0];
   var b = things[1];
 
@@ -68,28 +68,10 @@
   Expect.equals(1, b.cmp(b));
   expectThrows(() => b.cmp(a));
   expectThrows(() => b.cmp(5));
-
-  // Check that we throw the same errors when the locals are typed.
-  A aa = things[0];
-  B bb = things[1];
-
-  Expect.equals(124, aa.foo(123));
-  expectThrows(() => aa.foo('xxx'));
-
-  Expect.equals('helloha!', bb.foo('hello'));
-  expectThrows(() => bb.foo(123));
-
-  Expect.equals(0, aa.cmp(aa));
-  expectThrows(() => aa.cmp(bb));
-  expectThrows(() => aa.cmp(5));
-
-  Expect.equals(1, bb.cmp(bb));
-  expectThrows(() => bb.cmp(aa));
-  expectThrows(() => bb.cmp(5));
 }
 
-uncheckedModeTest() {
-  var things = [makeA(), makeB()];
+omitImplicitChecksModeTest() {
+  var things = <dynamic>[makeA(), makeB()];
   var a = things[0];
   var b = things[1];
 
@@ -106,30 +88,12 @@
   Expect.equals(1, b.cmp(b));
   Expect.equals(1, b.cmp(a));
   Expect.equals(1, b.cmp(5));
-
-  // Check that we do not throw errors when the locals are typed.
-  A aa = things[0];
-  B bb = things[1];
-
-  Expect.equals(124, aa.foo(123));
-  Expect.equals('xxx1', aa.foo('xxx'));
-
-  Expect.equals('helloha!', bb.foo('hello'));
-  Expect.equals('123ha!', bb.foo(123));
-
-  Expect.equals(0, aa.cmp(aa));
-  Expect.equals(0, aa.cmp(bb));
-  Expect.equals(0, aa.cmp(5));
-
-  Expect.equals(1, bb.cmp(bb));
-  Expect.equals(1, bb.cmp(aa));
-  Expect.equals(1, bb.cmp(5));
 }
 
-bool isCheckedMode() {
-  var stuff = [1, 'string'];
-  var a = stuff[0];
-  // Checked-mode detection.
+bool isComplianceMode() {
+  var stuff = <dynamic>[1, 'string'];
+  dynamic a = stuff[0];
+  // compliance-mode detection.
   try {
     String s = a;
     return false;
@@ -143,9 +107,9 @@
   nativeTesting();
   setup();
 
-  if (isCheckedMode()) {
-    checkedModeTest();
+  if (isComplianceMode()) {
+    complianceModeTest();
   } else {
-    uncheckedModeTest();
+    omitImplicitChecksModeTest();
   }
 }
diff --git a/tests/compiler/dart2js_native/native_checked_fields_frog_test.dart b/tests/compiler/dart2js_native/native_checked_fields_frog_test.dart
index ffc9d387..f9fdece 100644
--- a/tests/compiler/dart2js_native/native_checked_fields_frog_test.dart
+++ b/tests/compiler/dart2js_native/native_checked_fields_frog_test.dart
@@ -44,8 +44,8 @@
   Expect.isTrue(threw);
 }
 
-checkedModeTest() {
-  var things = [makeA(), makeB()];
+complianceModeTest() {
+  var things = <dynamic>[makeA(), makeB()];
   var a = things[0];
   var b = things[1];
 
@@ -56,22 +56,10 @@
   b.foo = 'hello';
   expectThrows(() => b.foo = 123);
   Expect.equals('hello', b.foo);
-
-  // Check that we throw the same errors when the locals are typed.
-  A aa = things[0];
-  B bb = things[1];
-
-  aa.foo = 124;
-  expectThrows(() => aa.foo = 'xxx');
-  Expect.equals(124, aa.foo);
-
-  bb.foo = 'hello';
-  expectThrows(() => bb.foo = 124);
-  Expect.equals('hello', bb.foo);
 }
 
-uncheckedModeTest() {
-  var things = [makeA(), makeB()];
+omitImplicitChecksTest() {
+  var things = <dynamic>[makeA(), makeB()];
   var a = things[0];
   var b = things[1];
 
@@ -84,26 +72,12 @@
   Expect.equals('hello', b.foo);
   b.foo = 123;
   Expect.equals(b.foo, 123);
-
-  // Check that we do not throw errors when the locals are typed.
-  A aa = things[0];
-  B bb = things[1];
-
-  aa.foo = 124;
-  Expect.equals(124, aa.foo);
-  a.foo = 'yyy';
-  Expect.equals('yyy', a.foo);
-
-  b.foo = 'hello';
-  Expect.equals('hello', b.foo);
-  b.foo = 124;
-  Expect.equals(b.foo, 124);
 }
 
-bool isCheckedMode() {
+bool isComplianceMode() {
   var stuff = [1, 'string'];
   var a = stuff[0];
-  // Checked-mode detection.
+  // Detect whether we are using --omit-implicit-checks.
   try {
     String s = a;
     return false;
@@ -117,9 +91,9 @@
   nativeTesting();
   setup();
 
-  if (isCheckedMode()) {
-    checkedModeTest();
+  if (isComplianceMode()) {
+    complianceModeTest();
   } else {
-    uncheckedModeTest();
+    omitImplicitChecksTest();
   }
 }
diff --git a/tests/compiler/dart2js_native/native_class_inheritance1_frog_test.dart b/tests/compiler/dart2js_native/native_class_inheritance1_frog_test.dart
index 3691959..322dcba 100644
--- a/tests/compiler/dart2js_native/native_class_inheritance1_frog_test.dart
+++ b/tests/compiler/dart2js_native/native_class_inheritance1_frog_test.dart
@@ -104,7 +104,7 @@
 
   caught = false;
   try {
-    var x = 123;
+    dynamic x = 123;
     x.foo(20);
   } catch (ex) {
     caught = true;
diff --git a/tests/compiler/dart2js_native/native_class_inheritance4_frog_test.dart b/tests/compiler/dart2js_native/native_class_inheritance4_frog_test.dart
index 6a2fff5..25f8fcd 100644
--- a/tests/compiler/dart2js_native/native_class_inheritance4_frog_test.dart
+++ b/tests/compiler/dart2js_native/native_class_inheritance4_frog_test.dart
@@ -111,7 +111,7 @@
 testAB_dynamic() {
   setup(); // Fresh constructors.
 
-  var things = [makeA(), makeB()];
+  var things = <dynamic>[makeA(), makeB()];
   var a = things[0];
   var b = things[1];
 
diff --git a/tests/compiler/dart2js_native/native_class_is_check1_frog_test.dart b/tests/compiler/dart2js_native/native_class_is_check1_frog_test.dart
index 5034e0e..6b8bb37 100644
--- a/tests/compiler/dart2js_native/native_class_is_check1_frog_test.dart
+++ b/tests/compiler/dart2js_native/native_class_is_check1_frog_test.dart
@@ -8,7 +8,7 @@
 
 abstract class I {
   I read();
-  write(I x);
+  write(covariant I x);
 }
 
 // Native implementation.
diff --git a/tests/compiler/dart2js_native/native_class_is_check3_frog_test.dart b/tests/compiler/dart2js_native/native_class_is_check3_frog_test.dart
index 850f25d..98cbf91 100644
--- a/tests/compiler/dart2js_native/native_class_is_check3_frog_test.dart
+++ b/tests/compiler/dart2js_native/native_class_is_check3_frog_test.dart
@@ -10,7 +10,7 @@
 
 abstract class I extends J {
   I read();
-  write(I x);
+  write(covariant I x);
 }
 
 // Native implementation.
diff --git a/tests/compiler/dart2js_native/native_constructor_name_test.dart b/tests/compiler/dart2js_native/native_constructor_name_test.dart
index dbe9984..9d60a40 100644
--- a/tests/compiler/dart2js_native/native_constructor_name_test.dart
+++ b/tests/compiler/dart2js_native/native_constructor_name_test.dart
@@ -32,7 +32,7 @@
   nativeTesting();
   setup();
 
-  var a = new A();
+  dynamic a = new A();
   var z = makeZ();
 
   Expect.equals(100, z.foo());
diff --git a/tests/compiler/dart2js_native/native_method_inlining_test.dart b/tests/compiler/dart2js_native/native_method_inlining_test.dart
index ac3be95..ec5e1ad 100644
--- a/tests/compiler/dart2js_native/native_method_inlining_test.dart
+++ b/tests/compiler/dart2js_native/native_method_inlining_test.dart
@@ -77,16 +77,6 @@
 })()""");
 }
 
-bool get isCheckedMode {
-  int i = 0;
-  try {
-    i = 'a';
-  } catch (e) {
-    return true;
-  }
-  return false;
-}
-
 void match(String s, String pattern1) {
   var pattern2 = pattern1.replaceAll(' ', '');
   Expect.isTrue(s.contains(pattern1) || s.contains(pattern2),
@@ -103,19 +93,11 @@
   String method1 = findMethodTextContaining(new B(), '(Method1Tag)');
   Expect.isNotNull(method1, 'No method found containing "(Method1Tag)"');
 
-  if (isCheckedMode) {
-    match(method1, r'foo()');
-    // TODO: inlining in checked mode.
-    nomatch(method1, r'foo(1)');
-    //  t1.foo$3(x, 3, 10, 30)  or  y.EL(z,3,10,30)
-    match(method1, r', 3, 10, 30)');
-  } else {
-    // Direct (inlined) calls don't have $3 or minified names.
-    match(method1, r'.foo()');
-    match(method1, r'.foo(1)');
-    match(method1, r'.foo(2, 10)');
-    match(method1, r'.foo(3, 10, 30)');
-  }
+  // Direct (inlined) calls don't have $3 or minified names.
+  match(method1, r'.foo()');
+  match(method1, r'.foo(1)');
+  match(method1, r'.foo(2, 10)');
+  match(method1, r'.foo(3, 10, 30)');
 
   // Ensure the methods are compiled by calling them.
   var a = makeA();
diff --git a/tests/compiler/dart2js_native/native_mirror_test.dart b/tests/compiler/dart2js_native/native_mirror_test.dart
deleted file mode 100644
index 99551c6..0000000
--- a/tests/compiler/dart2js_native/native_mirror_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Intercepted members need to be accessed in a different way than normal
-// members. In this test the native class A (thus being intercepted) has a
-// member "foo", that is final. Therefore only the getter needs to be
-// intercepted. Dart2js had a bug where it used the intercepted
-// calling-convention for parts of the compiler, and the non-intercepted
-// convention for others, making this fail.
-
-import 'native_testing.dart';
-import 'dart:_js_helper';
-import 'dart:mirrors';
-
-@Native("A")
-class A {
-  final foo;
-}
-
-class B {
-  String foo;
-}
-
-main() {
-  var b = new B();
-  reflect(b).setField(new Symbol("foo"), "bar");
-  Expect.equals("bar", b.foo);
-}
diff --git a/tests/compiler/dart2js_native/native_missing_method1_frog_test.dart b/tests/compiler/dart2js_native/native_missing_method1_frog_test.dart
index 7cc54be..d0595f6 100644
--- a/tests/compiler/dart2js_native/native_missing_method1_frog_test.dart
+++ b/tests/compiler/dart2js_native/native_missing_method1_frog_test.dart
@@ -33,7 +33,7 @@
 
 typedContext() {
   confuse(new B()).foo();
-  A a = makeA();
+  dynamic a = makeA();
   Expect.throws(() => a.foo(), (e) => e is NoSuchMethodError);
   Expect.throws(() => a.foo, (e) => e is NoSuchMethodError);
   Expect.throws(() => a.foo = 4, (e) => e is NoSuchMethodError);
diff --git a/tests/compiler/dart2js_native/native_missing_method2_frog_test.dart b/tests/compiler/dart2js_native/native_missing_method2_frog_test.dart
index 13efaa9..ae5799f 100644
--- a/tests/compiler/dart2js_native/native_missing_method2_frog_test.dart
+++ b/tests/compiler/dart2js_native/native_missing_method2_frog_test.dart
@@ -33,8 +33,8 @@
   }
 }
 
-typedContext() {
-  A a = makeA();
+inferredContext() {
+  dynamic a = makeA();
   Expect.throws(() => a.foo(), (e) => e is NoSuchMethodError);
   Expect.throws(() => a.foo, (e) => e is NoSuchMethodError);
   Expect.throws(() => a.foo = 4, (e) => e is NoSuchMethodError);
@@ -52,6 +52,6 @@
   setup();
   confuse(new B()).foo();
   confuse(new C()).foo(1);
-  typedContext();
+  inferredContext();
   untypedContext();
 }
diff --git a/tests/compiler/dart2js_native/native_mixin_field_test.dart b/tests/compiler/dart2js_native/native_mixin_field_test.dart
index 1b6d9d9..7f1aebb 100644
--- a/tests/compiler/dart2js_native/native_mixin_field_test.dart
+++ b/tests/compiler/dart2js_native/native_mixin_field_test.dart
@@ -47,9 +47,9 @@
   setup();
   A a = makeA();
   Expect.equals("A-foo", a.foo);
-  Expect.throws(() => a.bar, (e) => e is NoSuchMethodError);
-  Expect.throws(() => a.baz, (e) => e is NoSuchMethodError);
-  Expect.throws(() => a.buz, (e) => e is NoSuchMethodError);
+  Expect.throws(() => (a as dynamic).bar, (e) => e is NoSuchMethodError);
+  Expect.throws(() => (a as dynamic).baz, (e) => e is NoSuchMethodError);
+  Expect.throws(() => (a as dynamic).buz, (e) => e is NoSuchMethodError);
 
   B b = makeB();
   Expect.equals("A-foo", b.foo);
@@ -59,14 +59,14 @@
   Expect.isNull(b.buz);
 
   M1 m1 = new M1();
-  Expect.throws(() => m1.foo, (e) => e is NoSuchMethodError);
-  Expect.throws(() => m1.bar, (e) => e is NoSuchMethodError);
+  Expect.throws(() => (m1 as dynamic).foo, (e) => e is NoSuchMethodError);
+  Expect.throws(() => (m1 as dynamic).bar, (e) => e is NoSuchMethodError);
   Expect.isNull(m1.baz);
-  Expect.throws(() => m1.buz, (e) => e is NoSuchMethodError);
+  Expect.throws(() => (m1 as dynamic).buz, (e) => e is NoSuchMethodError);
 
   M2 m2 = new M2();
-  Expect.throws(() => m2.foo, (e) => e is NoSuchMethodError);
+  Expect.throws(() => (m2 as dynamic).foo, (e) => e is NoSuchMethodError);
   Expect.isNull(m2.bar);
-  Expect.throws(() => m2.baz, (e) => e is NoSuchMethodError);
+  Expect.throws(() => (m2 as dynamic).baz, (e) => e is NoSuchMethodError);
   Expect.isNull(m2.buz);
 }
diff --git a/tests/compiler/dart2js_native/native_mixin_multiple_test.dart b/tests/compiler/dart2js_native/native_mixin_multiple_test.dart
index 2cbbb24..310d75b 100644
--- a/tests/compiler/dart2js_native/native_mixin_multiple_test.dart
+++ b/tests/compiler/dart2js_native/native_mixin_multiple_test.dart
@@ -47,7 +47,8 @@
   setup();
   A a = makeA();
   Expect.equals("A-foo", a.foo());
-  Expect.throws(() => a.bar(), (error) => error is NoSuchMethodError);
+  Expect.throws(
+      () => (a as dynamic).bar(), (error) => error is NoSuchMethodError);
   Expect.equals("A-baz", a.baz());
   Expect.isTrue(a is A);
   Expect.isFalse(a is B);
@@ -65,7 +66,8 @@
 
   M1 m1 = new M1();
   Expect.equals("M1-foo", m1.foo());
-  Expect.throws(() => m1.bar(), (error) => error is NoSuchMethodError);
+  Expect.throws(
+      () => (m1 as dynamic).bar(), (error) => error is NoSuchMethodError);
   Expect.equals("M1-baz", m1.baz());
   Expect.isFalse(m1 is A);
   Expect.isFalse(m1 is B);
@@ -74,8 +76,10 @@
 
   M2 m2 = new M2();
   Expect.equals("M2-foo", m2.foo());
-  Expect.throws(() => m2.bar(), (error) => error is NoSuchMethodError);
-  Expect.throws(() => m2.baz(), (error) => error is NoSuchMethodError);
+  Expect.throws(
+      () => (m2 as dynamic).bar(), (error) => error is NoSuchMethodError);
+  Expect.throws(
+      () => (m2 as dynamic).baz(), (error) => error is NoSuchMethodError);
   Expect.isFalse(m2 is A);
   Expect.isFalse(m2 is B);
   Expect.isFalse(m2 is M1);
diff --git a/tests/compiler/dart2js_native/native_mixin_test.dart b/tests/compiler/dart2js_native/native_mixin_test.dart
index e214185..64bd3e4 100644
--- a/tests/compiler/dart2js_native/native_mixin_test.dart
+++ b/tests/compiler/dart2js_native/native_mixin_test.dart
@@ -43,7 +43,8 @@
   setup();
   A a = makeA();
   Expect.equals("A-foo", a.foo());
-  Expect.throws(() => a.bar(), (error) => error is NoSuchMethodError);
+  Expect.throws(
+      () => (a as dynamic).bar(), (error) => error is NoSuchMethodError);
   Expect.equals("A-baz", a.baz());
   Expect.isTrue(a is A);
   Expect.isFalse(a is B);
@@ -60,7 +61,8 @@
   M m = new M();
   Expect.equals("M-foo", m.foo());
   Expect.equals("M-bar", m.bar());
-  Expect.throws(() => m.baz(), (error) => error is NoSuchMethodError);
+  Expect.throws(
+      () => (m as dynamic).baz(), (error) => error is NoSuchMethodError);
   Expect.isFalse(m is A);
   Expect.isFalse(m is B);
   Expect.isTrue(m is M);
diff --git a/tests/compiler/dart2js_native/native_no_such_method_exception3_frog_test.dart b/tests/compiler/dart2js_native/native_no_such_method_exception3_frog_test.dart
deleted file mode 100644
index 0459703..0000000
--- a/tests/compiler/dart2js_native/native_no_such_method_exception3_frog_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import "dart:mirrors" show reflect;
-import "native_testing.dart";
-
-class GetName {
-  foo(x, y, [z]) => "foo";
-}
-
-String getName(im) => reflect(new GetName()).delegate(im);
-
-@Native("A")
-class A {
-  bar() => 42;
-}
-
-@Native("B")
-class B {
-  foo() => 42;
-}
-
-class C {
-  static create() => new C();
-  noSuchMethod(x) => "${getName(x)}:${x.positionalArguments}";
-}
-
-makeA() native;
-
-setup() {
-  JS('', r"""
-(function(){
-  function A() {}
-  makeA = function() { return new A(); };
-
-  self.nativeConstructor(A);
-})()""");
-}
-
-main() {
-  nativeTesting();
-  setup();
-  var a = makeA();
-  a.bar();
-  var exception;
-  try {
-    a.foo();
-  } on NoSuchMethodError catch (e) {
-    exception = e;
-  }
-  Expect.isNotNull(exception);
-  var c = C.create();
-  Expect.equals("foo:[1, 2]", c.foo(1, 2));
-  Expect.equals("foo:[3, 4, 5]", c.foo(3, 4, 5));
-}
diff --git a/tests/compiler/dart2js_native/native_no_such_method_exception4_frog_test.dart b/tests/compiler/dart2js_native/native_no_such_method_exception4_frog_test.dart
deleted file mode 100644
index ad77c89..0000000
--- a/tests/compiler/dart2js_native/native_no_such_method_exception4_frog_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import "dart:mirrors" show reflect;
-import "native_testing.dart";
-
-class GetName {
-  foo(x, y) => "foo";
-  baz(x, y, z) => "baz";
-}
-
-String getName(im) => reflect(new GetName()).delegate(im);
-
-@Native("A")
-class A {
-  bar() => 42;
-  noSuchMethod(x) => "native(${getName(x)}:${x.positionalArguments})";
-}
-
-@Native("B")
-class B {
-  baz() => 42;
-}
-
-makeA() native;
-
-setup() {
-  JS('', r"""
-(function(){
-  function A() {}
-  makeA = function() { return new A(); };
-  self.nativeConstructor(A);
-})()""");
-}
-
-main() {
-  nativeTesting();
-  setup();
-  var a = makeA();
-  a.bar();
-  Expect.equals("native(foo:[1, 2])", a.foo(1, 2));
-  Expect.equals("native(baz:[3, 4, 5])", a.baz(3, 4, 5));
-}
diff --git a/tests/compiler/dart2js_native/native_no_such_method_exception5_frog_test.dart b/tests/compiler/dart2js_native/native_no_such_method_exception5_frog_test.dart
deleted file mode 100644
index 2a2fd6b..0000000
--- a/tests/compiler/dart2js_native/native_no_such_method_exception5_frog_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import "dart:mirrors" show reflect;
-import "native_testing.dart";
-
-class GetName {
-  foo(x, [y]) => "foo";
-  baz(x, y, z) => "baz";
-}
-
-String getName(im) => reflect(new GetName()).delegate(im);
-
-@Native("A")
-class A {
-  bar() => 42;
-  noSuchMethod(x) => "native(${getName(x)}:${x.positionalArguments})";
-}
-
-@Native("B")
-class B {
-  baz() => 42;
-}
-
-class C {
-  static create() => new C();
-  noSuchMethod(x) => "${getName(x)}:${x.positionalArguments}";
-}
-
-makeA() native;
-
-setup() {
-  JS('', r"""
-(function(){
-  function A() {}
-  makeA = function() { return new A(); };
-  self.nativeConstructor(A);
-})()""");
-}
-
-main() {
-  nativeTesting();
-  setup();
-  var a = makeA();
-  a.bar();
-  Expect.equals("native(foo:[1, 2])", a.foo(1, 2));
-  Expect.equals("native(baz:[3, 4, 5])", a.baz(3, 4, 5));
-  var c = C.create();
-  Expect.equals("foo:[6]", c.foo(6));
-}
diff --git a/tests/compiler/dart2js_native/native_window1_frog_test.dart b/tests/compiler/dart2js_native/native_window1_frog_test.dart
index fd18641..f47b66d 100644
--- a/tests/compiler/dart2js_native/native_window1_frog_test.dart
+++ b/tests/compiler/dart2js_native/native_window1_frog_test.dart
@@ -15,7 +15,9 @@
   final int document;
 }
 
-class Win implements Window {}
+class Win implements Window {
+  noSuchMethod(m) => super.noSuchMethod(m);
+}
 
 main() {
   nativeTesting();
diff --git a/tests/compiler/dart2js_native/native_window2_frog_test.dart b/tests/compiler/dart2js_native/native_window2_frog_test.dart
index 77846c3..143c1e6 100644
--- a/tests/compiler/dart2js_native/native_window2_frog_test.dart
+++ b/tests/compiler/dart2js_native/native_window2_frog_test.dart
@@ -15,12 +15,14 @@
   final int document;
 }
 
-class Win implements Window {}
+class Win implements Window {
+  noSuchMethod(m) => super.noSuchMethod(m);
+}
 
 main() {
   nativeTesting();
   // By not typing the variable, Frog does not try to optimize calls
   // on it.
-  var win = new Win();
+  dynamic win = new Win();
   Expect.throws(() => win.document, (e) => e is NoSuchMethodError);
 }
diff --git a/tests/compiler/dart2js_native/rti_only_native_test.dart b/tests/compiler/dart2js_native/rti_only_native_test.dart
index 172d0ba..ec2fa525 100644
--- a/tests/compiler/dart2js_native/rti_only_native_test.dart
+++ b/tests/compiler/dart2js_native/rti_only_native_test.dart
@@ -19,7 +19,7 @@
 
 main() {
   void foo(A x) {}
-  var map = {'a': 0, 'b': main};
+  var map = <String, dynamic>{'a': 0, 'b': main};
   try {
     map.values.forEach((x) => x.rti_only_native_test_field);
   } finally {
diff --git a/tests/compiler/dart2js_native/static_methods_test.dart b/tests/compiler/dart2js_native/static_methods_test.dart
index d8badec..d356c25 100644
--- a/tests/compiler/dart2js_native/static_methods_test.dart
+++ b/tests/compiler/dart2js_native/static_methods_test.dart
@@ -57,19 +57,14 @@
   nativeTesting();
   setup();
 
-  // TODO(sra): Investigate why this line is necessary to get a correctly
-  // compiled convertDartClosureToJS.  Without this line, the compiler crashes.
-  convertDartClosureToJS(main, 1);
-
   Expect.equals(5, AA.foo("Hello"));
 
-  Expect.equals(3, AA.bar((s) => s.length));
-  Expect.equals(3, AA.baz((s) => s.length));
+  Expect.equals(3, AA.bar((String s) => s.length));
+  Expect.equals(3, AA.baz((String s) => s.length));
 
-  Expect.equals(6, AA.lepton((s) => s.length));
-  Expect.equals(6, AA.electron((s) => s.length));
+  Expect.equals(6, AA.lepton((String s) => s.length));
+  Expect.equals(6, AA.electron((String s) => s.length));
 
-  Expect.equals(12, AA._baryon((s) => s.length));
-  Expect.equals(12, AA.proton((s) => s.length));
-  Expect.throws(() => AA.baryon((s) => s.length)); // Not defined on AA.
+  Expect.equals(12, AA._baryon((String s) => s.length));
+  Expect.equals(12, AA.proton((String s) => s.length));
 }
diff --git a/tests/compiler/dart2js_native/type_error_decode_test.dart b/tests/compiler/dart2js_native/type_error_decode_test.dart
index 1c37f03..ba97210 100644
--- a/tests/compiler/dart2js_native/type_error_decode_test.dart
+++ b/tests/compiler/dart2js_native/type_error_decode_test.dart
@@ -34,18 +34,18 @@
 }
 
 main() {
-  var x = null;
-  var z = new Object();
-  var v = new List(1)[0];
-  var s = "Cannot call method 'foo' of null";
-  var nul = null;
-  var f = new Foo();
+  dynamic x = null;
+  dynamic z = new Object();
+  dynamic v = new List(1)[0];
+  dynamic s = "Cannot call method 'foo' of null";
+  dynamic nul = null;
+  dynamic f = new Foo();
 
   expectThrows(() => x.fisk(), isNullError);
   expectThrows(() => v.fisk(), isNullError);
   expectThrows(() => z.fisk(), isJsNoSuchMethodError);
   expectThrows(() => s.fisk(), isJsNoSuchMethodError);
-  expectThrows(() => null(), isNullError);
+  expectThrows(() => (null as dynamic)(), isNullError);
   expectThrows(() => f.field(), isNullError);
 
   expectThrows(() => confuse(x).fisk(), isNullError);