Version 2.15.0-5.0.dev

Merge commit 'ef1f4c78dbeff233c0f1cb16c32df12d4e738c0f' into 'dev'
diff --git a/DEPS b/DEPS
index e8e0461..bb4a58c 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": "dfab47fd11fb47a8475e77765fdb183a8002fe4e",
+  "co19_rev": "aff1a334d7875e465c2f43e1b38774512fbb4ba4",
   "co19_2_rev": "d6e96f6d922b17fcf2e021e0f2b28835c861eb17",
 
   # The internal benchmarks to use. See go/dart-benchmarks-internal
diff --git a/runtime/vm/compiler/backend/il_test_helper.cc b/runtime/vm/compiler/backend/il_test_helper.cc
index 63c1e36..5d332bc 100644
--- a/runtime/vm/compiler/backend/il_test_helper.cc
+++ b/runtime/vm/compiler/backend/il_test_helper.cc
@@ -36,6 +36,7 @@
   return lib.ptr();
 }
 
+#if !defined(PRODUCT)
 LibraryPtr ReloadTestScript(const char* script) {
   Dart_Handle api_lib;
   {
@@ -48,6 +49,7 @@
   EXPECT(!lib.IsNull());
   return lib.ptr();
 }
+#endif
 
 FunctionPtr GetFunction(const Library& lib, const char* name) {
   Thread* thread = Thread::Current();
diff --git a/runtime/vm/compiler/backend/il_test_helper.h b/runtime/vm/compiler/backend/il_test_helper.h
index 3b2f6ba..73f32bf 100644
--- a/runtime/vm/compiler/backend/il_test_helper.h
+++ b/runtime/vm/compiler/backend/il_test_helper.h
@@ -56,7 +56,7 @@
                           Dart_NativeEntryResolver resolver = nullptr,
                           const char* lib_uri = RESOLVED_USER_TEST_URI);
 
-LibraryPtr ReloadTestScript(const char* script);
+NOT_IN_PRODUCT(LibraryPtr ReloadTestScript(const char* script));
 
 FunctionPtr GetFunction(const Library& lib, const char* name);
 ClassPtr GetClass(const Library& lib, const char* name);
diff --git a/runtime/vm/type_testing_stubs_test.cc b/runtime/vm/type_testing_stubs_test.cc
index e036dfa..9e807ad 100644
--- a/runtime/vm/type_testing_stubs_test.cc
+++ b/runtime/vm/type_testing_stubs_test.cc
@@ -221,7 +221,7 @@
     // Respecialization can only happen for test cases that would specialize
     // and which won't end up cached in the TTS.
     ASSERT(!should_respecialize ||
-           should_specialize && !should_be_false_negative);
+           (should_specialize && !should_be_false_negative));
   }
 
   bool HasSameSTCEntry(const TTSTestCase& other) const {
@@ -552,7 +552,7 @@
         !is_lazy_specialization && test_case.should_be_false_negative;
     if (should_update_stc && !had_stc_entry) {
       // We should have changed the STC to include the new entry.
-      EXPECT(previous_stc_.IsNull() && !last_stc_.IsNull() ||
+      EXPECT((previous_stc_.IsNull() && !last_stc_.IsNull()) ||
              previous_stc_.cache() != last_stc_.cache());
       // We only should have added one check.
       EXPECT_EQ(previous_stc_.IsNull() ? 1 : previous_stc_.NumberOfChecks() + 1,
@@ -591,7 +591,7 @@
       }
     } else {
       // Whatever STC existed before, if any, should be unchanged.
-      EXPECT(previous_stc_.IsNull() && last_stc_.IsNull() ||
+      EXPECT((previous_stc_.IsNull() && last_stc_.IsNull()) ||
              previous_stc_.cache() == last_stc_.cache());
     }
 
@@ -1338,7 +1338,7 @@
   EXPECT(state.last_stc().ptr() == state.current_stc());
   // Loading the new library should not reset the STCs, as no respecialization
   // should happen yet.
-  EXPECT(state.last_stc().IsNull() && stc_cache.IsNull() ||
+  EXPECT((state.last_stc().IsNull() && stc_cache.IsNull()) ||
          stc_cache.ptr() == state.last_stc().cache());
 
   const auto& obj_b2 = Object::Handle(Invoke(second_library, "createB2"));
@@ -1390,7 +1390,7 @@
   EXPECT(state.last_stc().ptr() == state.current_stc());
   // Loading the new library should not reset the STCs, as no respecialization
   // should happen yet.
-  EXPECT(state.last_stc().IsNull() && stc_cache.IsNull() ||
+  EXPECT((state.last_stc().IsNull() && stc_cache.IsNull()) ||
          stc_cache.ptr() == state.last_stc().cache());
 
   const auto& obj_b3 = Object::Handle(Invoke(third_library, "createB3"));
diff --git a/tests/co19/co19-co19.status b/tests/co19/co19-co19.status
index 0d67353..60c3a7a 100644
--- a/tests/co19/co19-co19.status
+++ b/tests/co19/co19-co19.status
@@ -2,8 +2,18 @@
 # 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.
 
+Language/Libraries_and_Scripts/Scripts/top_level_main_t01: Skip # https://github.com/dart-lang/co19/issues/1137
+Language/Libraries_and_Scripts/Scripts/top_level_main_t06: Skip # https://github.com/dart-lang/co19/issues/1137
+LibTest/io/HttpClient/findProxy_A01_t01: Skip # https://github.com/dart-lang/co19/issues/1129
+LibTest/io/HttpClient/findProxy_A01_t02: Skip # https://github.com/dart-lang/co19/issues/1129
+LibTest/io/HttpClient/findProxy_A02_t01: Skip # https://github.com/dart-lang/co19/issues/1129
+LibTest/io/HttpClient/findProxy_A02_t02: Skip # https://github.com/dart-lang/co19/issues/1129
 LibTest/io/RawDatagramSocket/*: Skip # https://github.com/dart-lang/co19/issues/195
 
 [ $compiler == dart2analyzer ]
 LanguageFeatures/nnbd/static/strong/*: SkipByDesign # Strong mode tests should not be run with analyzer
 LanguageFeatures/nnbd/static/weak/*: SkipByDesign # Weak mode tests should not be run with analyzer
+
+[ $compiler == dart2js || $compiler == dartdevk ]
+Language/Libraries_and_Scripts/Scripts/top_level_main_t01: SkipByDesign # Uses dart:io.
+Language/Libraries_and_Scripts/Scripts/top_level_main_t06: SkipByDesign # Uses dart:io.
diff --git a/tests/language/generic_methods/explicit_instantiated_tearoff_test.dart b/tests/language/generic_methods/explicit_instantiated_tearoff_test.dart
index 5813d60..8028216 100644
--- a/tests/language/generic_methods/explicit_instantiated_tearoff_test.dart
+++ b/tests/language/generic_methods/explicit_instantiated_tearoff_test.dart
@@ -65,12 +65,8 @@
       .expectStaticType<Exactly<int Function(String, [String?])>>();
     this.extInstanceMethod<int, String>
       .expectStaticType<Exactly<int Function(String, [String?])>>();
-
     Expect.identical(staticMethod<int, String>, staticTearOff);
-
-    // Extension instance methods are not equal unless identical.
-    Expect.notEquals(
-        extInstanceMethod<int, String>, this.extInstanceMethod<int, String>);
+    // Extension instance methods do not specify equality.
   }
 }
 
@@ -134,9 +130,7 @@
   Expect.equals(
       o.mixinInstanceMethod<int, String>, o.mixinInstanceMethod<int, String>);
 
-  // Instantiated extension methods are not equal unless they are identical.
-  Expect.notEquals(
-      o.extInstanceMethod<int, String>, o.extInstanceMethod<int, String>);
+  // Instantiated extension methods do not specify equality.
 
   // And not canonicalized where they shouldn't (different types).
   Expect.notEquals(toplevel<int, String>, toplevel<num, String>);
@@ -155,12 +149,10 @@
     Expect.equals(C.staticMethod<T, String>, C.staticMethod<T, String>);
     Expect.equals(M.staticMethod<T, String>, M.staticMethod<T, String>);
     Expect.equals(E.staticMethod<T, String>, E.staticMethod<T, String>);
-    Expect.notEquals(local<T, String>, local<T, String>);
     Expect.equals(toplevel<int, T>, toplevel<int, T>);
     Expect.equals(C.staticMethod<int, T>, C.staticMethod<int, T>);
     Expect.equals(M.staticMethod<int, T>, M.staticMethod<int, T>);
     Expect.equals(E.staticMethod<int, T>, E.staticMethod<int, T>);
-    Expect.notEquals(local<int, T>, local<int, T>);
   }<int>());
 
   o.tearOffsOnThis();
diff --git a/tools/VERSION b/tools/VERSION
index 2200454..0bd35b8 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 15
 PATCH 0
-PRERELEASE 4
+PRERELEASE 5
 PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/generate_package_config.dart b/tools/generate_package_config.dart
index f8afaa8..1664201 100644
--- a/tools/generate_package_config.dart
+++ b/tools/generate_package_config.dart
@@ -63,7 +63,7 @@
     packageDirectory('tools/package_deps'),
   ];
   // TODO(sigmund): remove this when dart2js_info's new location is used.
-  packageDirs.remove(packageDirectory('pkg/dart2js_info'));
+  packageDirs.remove(packageDirectory(p.join('pkg', 'dart2js_info')));
 
   var cfePackageDirs = [
     packageDirectory('pkg/front_end/testcases/'),