diff --git a/pkg/analyzer/test/src/task/strong/checker_test.dart b/pkg/analyzer/test/src/task/strong/checker_test.dart
index dfad546..02a7d81 100644
--- a/pkg/analyzer/test/src/task/strong/checker_test.dart
+++ b/pkg/analyzer/test/src/task/strong/checker_test.dart
@@ -3697,79 +3697,6 @@
     ]);
   }
 
-  test_typeSubtyping_assigningClass() async {
-    await assertErrorsInCode('''
-class A {}
-class B extends A {}
-
-void main() {
-   dynamic y;
-   Object o;
-   int i = 0;
-   double d = 0.0;
-   num n;
-   A a;
-   B b;
-   y = a;
-   o = a;
-   i = a;
-   d = a;
-   n = a;
-   a = a;
-   b = a;
-}
-''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 58, 1),
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 71, 1),
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 81, 1),
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 98, 1),
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 114, 1),
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 130, 1),
-      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 160, 1),
-      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 170, 1),
-      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 180, 1),
-    ]);
-  }
-
-  test_typeSubtyping_assigningSubclass() async {
-    await assertErrorsInCode('''
-class A {}
-class B extends A {}
-class C extends A {}
-
-void main() {
-   dynamic y;
-   Object o;
-   int i = 0;
-   double d = 0.0;
-   num n;
-   A a;
-   B b;
-   C c;
-   y = b;
-   o = b;
-   i = b;
-   d = b;
-   n = b;
-   a = b;
-   b = b;
-   c = b;
-}
-''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 79, 1),
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 92, 1),
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 102, 1),
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 119, 1),
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 135, 1),
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 143, 1),
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 159, 1),
-      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 189, 1),
-      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 199, 1),
-      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 209, 1),
-      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 239, 1),
-    ]);
-  }
-
   test_typeSubtyping_dynamicDowncasts() async {
     await assertErrorsInCode('''
 class A {}
@@ -3825,49 +3752,6 @@
     ]);
   }
 
-  test_typeSubtyping_interfaces() async {
-    await assertErrorsInCode('''
-class A {}
-class B extends A {}
-class C extends A {}
-class D extends B implements C {}
-
-void main() {
-   A top;
-   B left;
-   C right;
-   D bot;
-   {
-     top = top;
-     top = left;
-     top = right;
-     top = bot;
-   }
-   {
-     left = top;
-     left = left;
-     left = right;
-     left = bot;
-   }
-   {
-     right = top;
-     right = left;
-     right = right;
-     right = bot;
-   }
-   {
-     bot = top;
-     bot = left;
-     bot = right;
-     bot = bot;
-   }
-}
-''', [
-      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 274, 5),
-      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 339, 4),
-    ]);
-  }
-
   test_unaryOperators() async {
     await assertErrorsInCode('''
 class A {
@@ -3924,18 +3808,6 @@
     ]);
   }
 
-  test_unboundRedirectingConstructor() async {
-    // This is a regression test for https://github.com/dart-lang/sdk/issues/25071
-    await assertErrorsInCode('''
-class Foo {
-  Foo() : this.init();
-}
- ''', [
-      error(CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR, 22,
-          11),
-    ]);
-  }
-
   test_unboundTypeName() async {
     await assertErrorsInCode('''
 void main() {
diff --git a/tools/VERSION b/tools/VERSION
index 237e5a0..75f577f 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 145
+PRERELEASE 146
 PRERELEASE_PATCH 0
\ No newline at end of file
