Version 2.17.0-10.0.dev

Merge commit '442836bce4676cd4ed1b8518af2e1a2dc5c1a463' into 'dev'
diff --git a/DEPS b/DEPS
index 727b7a0..79df492 100644
--- a/DEPS
+++ b/DEPS
@@ -44,7 +44,7 @@
   # co19 is a cipd package. Use update.sh in tests/co19[_2] to update these
   # hashes. It requires access to the dart-build-access group, which EngProd
   # has.
-  "co19_rev": "a4144628905e0d3326b2549c9a1425bfca06c681",
+  "co19_rev": "143ad7f74919b132951e447a547236e991d9f900",
   # This line prevents conflicts when both packages are rolled simultaneously.
   "co19_2_rev": "995745937abffe9fc3a6441f9f0db27b2d706e4c",
 
diff --git a/pkg/front_end/test/fasta/types/shared_type_tests.dart b/pkg/front_end/test/fasta/types/shared_type_tests.dart
index 224378f..fc0b9b8 100644
--- a/pkg/front_end/test/fasta/types/shared_type_tests.dart
+++ b/pkg/front_end/test/fasta/types/shared_type_tests.dart
@@ -426,6 +426,10 @@
         typeParameters: 'T extends Object');
     isObliviousSubtype('T & Future<int?>', 'FutureOr<num>?',
         typeParameters: 'T extends Object');
+    isNotSubtype('FutureOr<T?>?', 'FutureOr<Never?>?',
+        typeParameters: 'T extends FutureOr<T?>?');
+    isSubtype('FutureOr<Never?>?', 'FutureOr<T?>?',
+        typeParameters: 'T extends FutureOr<T?>?');
 
     if (!skipFutureOrPromotion) {
       isSubtype('T & FutureOr<int*>*', 'FutureOr<num*>*', typeParameters: 'T');
diff --git a/pkg/kernel/lib/src/types.dart b/pkg/kernel/lib/src/types.dart
index b78578c..f207418 100644
--- a/pkg/kernel/lib/src/types.dart
+++ b/pkg/kernel/lib/src/types.dart
@@ -404,12 +404,11 @@
   IsSubtypeOf isFutureOrRelated(FutureOrType s, InterfaceType t, Types types) {
     // Rules 7.1 and 7.2.
     return types
-        .performNullabilityAwareSubtypeCheck(s.typeArgument, t)
-        .andSubtypeCheckFor(
+        .performNullabilityAwareSubtypeCheck(
             new InterfaceType(types.hierarchy.coreTypes.futureClass,
                 Nullability.nonNullable, [s.typeArgument]),
-            t,
-            types)
+            t)
+        .andSubtypeCheckFor(s.typeArgument, t, types)
         .and(new IsSubtypeOf.basedSolelyOnNullabilities(s, t));
   }
 
diff --git a/tools/VERSION b/tools/VERSION
index a83e30d..5ade2e0 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 9
+PRERELEASE 10
 PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/yaml2json.dart b/tools/yaml2json.dart
index 50eba45..ef9fcdd 100644
--- a/tools/yaml2json.dart
+++ b/tools/yaml2json.dart
@@ -28,12 +28,12 @@
     stderr.writeln("Usage: yaml2json.dart input.yaml output.json [--check]");
     exit(1);
   }
-  Uri input = Uri.base.resolve(arguments[0]);
-  Uri output = Uri.base.resolve(arguments[1]);
+  Uri input = new File(arguments[0]).absolute.uri;
+  Uri output = new File(arguments[1]).absolute.uri;
   String inputString = arguments[0];
   String outputString = arguments[1];
   if (relative != null) {
-    String relativeTo = Uri.base.resolve(relative).toString();
+    String relativeTo = new File(relative).absolute.uri.toString();
     if (input.toString().startsWith(relativeTo)) {
       inputString = input.toString().substring(relativeTo.length);
     }