[3.0 alpha][core] Delete NullThrownError

TESTED=Ran CQ dryrun and approved failures for co19 tests that will be updated soon.

Change-Id: Ic0dc5fc084b1d0f3fce80dd88062f879abd7b556
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275840
Commit-Queue: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
diff --git a/pkg/front_end/testcases/dart2js/issue49198.dart b/pkg/front_end/testcases/dart2js/issue49198.dart
index 62e8c1a..9fe0c8c 100644
--- a/pkg/front_end/testcases/dart2js/issue49198.dart
+++ b/pkg/front_end/testcases/dart2js/issue49198.dart
@@ -7,17 +7,7 @@
 main() {
   try {
     throw null as dynamic;
-  } on NullThrownError catch (e) {
-    if (inSoundMode) {
-      throw 'Expected TypeError';
-    } else {
-      print('${e.runtimeType}:$e');
-    }
   } on TypeError catch (e) {
-    if (inSoundMode) {
-      print('${e.runtimeType}:$e');
-    } else {
-      throw 'Expected NullThrowError';
-    }
+    print('${e.runtimeType}:$e');
   }
 }
diff --git a/pkg/front_end/testcases/dart2js/issue49198.dart.strong.expect b/pkg/front_end/testcases/dart2js/issue49198.dart.strong.expect
index 46b21df..6bc370a 100644
--- a/pkg/front_end/testcases/dart2js/issue49198.dart.strong.expect
+++ b/pkg/front_end/testcases/dart2js/issue49198.dart.strong.expect
@@ -7,20 +7,7 @@
   try {
     throw (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForNonNullableByDefault} core::Object;
   }
-  on core::NullThrownError catch(final core::NullThrownError e) {
-    if(self::inSoundMode) {
-      throw "Expected TypeError";
-    }
-    else {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-  }
   on core::TypeError catch(final core::TypeError e) {
-    if(self::inSoundMode) {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-    else {
-      throw "Expected NullThrowError";
-    }
+    core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
   }
 }
diff --git a/pkg/front_end/testcases/dart2js/issue49198.dart.strong.transformed.expect b/pkg/front_end/testcases/dart2js/issue49198.dart.strong.transformed.expect
index e58b942..531702e 100644
--- a/pkg/front_end/testcases/dart2js/issue49198.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/dart2js/issue49198.dart.strong.transformed.expect
@@ -7,25 +7,12 @@
   try {
     throw (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForNonNullableByDefault} core::Object;
   }
-  on core::NullThrownError catch(final core::NullThrownError e) {
-    if(self::inSoundMode) {
-      throw "Expected TypeError";
-    }
-    else {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-  }
   on core::TypeError catch(final core::TypeError e) {
-    if(self::inSoundMode) {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-    else {
-      throw "Expected NullThrowError";
-    }
+    core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
   }
 }
 
 
 Extra constant evaluation status:
 Evaluated: AsExpression @ org-dartlang-testcase:///issue49198.dart:9:16 -> NullConstant(null)
-Extra constant evaluation: evaluated: 20, effectively constant: 1
+Extra constant evaluation: evaluated: 11, effectively constant: 1
diff --git a/pkg/front_end/testcases/dart2js/issue49198.dart.weak.expect b/pkg/front_end/testcases/dart2js/issue49198.dart.weak.expect
index 46b21df..6bc370a 100644
--- a/pkg/front_end/testcases/dart2js/issue49198.dart.weak.expect
+++ b/pkg/front_end/testcases/dart2js/issue49198.dart.weak.expect
@@ -7,20 +7,7 @@
   try {
     throw (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForNonNullableByDefault} core::Object;
   }
-  on core::NullThrownError catch(final core::NullThrownError e) {
-    if(self::inSoundMode) {
-      throw "Expected TypeError";
-    }
-    else {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-  }
   on core::TypeError catch(final core::TypeError e) {
-    if(self::inSoundMode) {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-    else {
-      throw "Expected NullThrowError";
-    }
+    core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
   }
 }
diff --git a/pkg/front_end/testcases/dart2js/issue49198.dart.weak.modular.expect b/pkg/front_end/testcases/dart2js/issue49198.dart.weak.modular.expect
index 46b21df..6bc370a 100644
--- a/pkg/front_end/testcases/dart2js/issue49198.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/dart2js/issue49198.dart.weak.modular.expect
@@ -7,20 +7,7 @@
   try {
     throw (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForNonNullableByDefault} core::Object;
   }
-  on core::NullThrownError catch(final core::NullThrownError e) {
-    if(self::inSoundMode) {
-      throw "Expected TypeError";
-    }
-    else {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-  }
   on core::TypeError catch(final core::TypeError e) {
-    if(self::inSoundMode) {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-    else {
-      throw "Expected NullThrowError";
-    }
+    core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
   }
 }
diff --git a/pkg/front_end/testcases/dart2js/issue49198.dart.weak.transformed.expect b/pkg/front_end/testcases/dart2js/issue49198.dart.weak.transformed.expect
index 0147940..326e8bb 100644
--- a/pkg/front_end/testcases/dart2js/issue49198.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/dart2js/issue49198.dart.weak.transformed.expect
@@ -7,25 +7,12 @@
   try {
     throw (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForNonNullableByDefault} core::Object;
   }
-  on core::NullThrownError catch(final core::NullThrownError e) {
-    if(self::inSoundMode) {
-      throw "Expected TypeError";
-    }
-    else {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-  }
   on core::TypeError catch(final core::TypeError e) {
-    if(self::inSoundMode) {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-    else {
-      throw "Expected NullThrowError";
-    }
+    core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
   }
 }
 
 
 Extra constant evaluation status:
 Evaluated: AsExpression @ org-dartlang-testcase:///issue49198.dart:9:16 -> NullConstant(null)
-Extra constant evaluation: evaluated: 19, effectively constant: 1
+Extra constant evaluation: evaluated: 10, effectively constant: 1
diff --git a/pkg/front_end/testcases/dartdevc/issue49198.dart b/pkg/front_end/testcases/dartdevc/issue49198.dart
index 62e8c1a..9fe0c8c 100644
--- a/pkg/front_end/testcases/dartdevc/issue49198.dart
+++ b/pkg/front_end/testcases/dartdevc/issue49198.dart
@@ -7,17 +7,7 @@
 main() {
   try {
     throw null as dynamic;
-  } on NullThrownError catch (e) {
-    if (inSoundMode) {
-      throw 'Expected TypeError';
-    } else {
-      print('${e.runtimeType}:$e');
-    }
   } on TypeError catch (e) {
-    if (inSoundMode) {
-      print('${e.runtimeType}:$e');
-    } else {
-      throw 'Expected NullThrowError';
-    }
+    print('${e.runtimeType}:$e');
   }
 }
diff --git a/pkg/front_end/testcases/dartdevc/issue49198.dart.strong.expect b/pkg/front_end/testcases/dartdevc/issue49198.dart.strong.expect
index 46b21df..6bc370a 100644
--- a/pkg/front_end/testcases/dartdevc/issue49198.dart.strong.expect
+++ b/pkg/front_end/testcases/dartdevc/issue49198.dart.strong.expect
@@ -7,20 +7,7 @@
   try {
     throw (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForNonNullableByDefault} core::Object;
   }
-  on core::NullThrownError catch(final core::NullThrownError e) {
-    if(self::inSoundMode) {
-      throw "Expected TypeError";
-    }
-    else {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-  }
   on core::TypeError catch(final core::TypeError e) {
-    if(self::inSoundMode) {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-    else {
-      throw "Expected NullThrowError";
-    }
+    core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
   }
 }
diff --git a/pkg/front_end/testcases/dartdevc/issue49198.dart.strong.transformed.expect b/pkg/front_end/testcases/dartdevc/issue49198.dart.strong.transformed.expect
index e58b942..531702e 100644
--- a/pkg/front_end/testcases/dartdevc/issue49198.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/dartdevc/issue49198.dart.strong.transformed.expect
@@ -7,25 +7,12 @@
   try {
     throw (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForNonNullableByDefault} core::Object;
   }
-  on core::NullThrownError catch(final core::NullThrownError e) {
-    if(self::inSoundMode) {
-      throw "Expected TypeError";
-    }
-    else {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-  }
   on core::TypeError catch(final core::TypeError e) {
-    if(self::inSoundMode) {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-    else {
-      throw "Expected NullThrowError";
-    }
+    core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
   }
 }
 
 
 Extra constant evaluation status:
 Evaluated: AsExpression @ org-dartlang-testcase:///issue49198.dart:9:16 -> NullConstant(null)
-Extra constant evaluation: evaluated: 20, effectively constant: 1
+Extra constant evaluation: evaluated: 11, effectively constant: 1
diff --git a/pkg/front_end/testcases/dartdevc/issue49198.dart.weak.expect b/pkg/front_end/testcases/dartdevc/issue49198.dart.weak.expect
index 46b21df..6bc370a 100644
--- a/pkg/front_end/testcases/dartdevc/issue49198.dart.weak.expect
+++ b/pkg/front_end/testcases/dartdevc/issue49198.dart.weak.expect
@@ -7,20 +7,7 @@
   try {
     throw (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForNonNullableByDefault} core::Object;
   }
-  on core::NullThrownError catch(final core::NullThrownError e) {
-    if(self::inSoundMode) {
-      throw "Expected TypeError";
-    }
-    else {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-  }
   on core::TypeError catch(final core::TypeError e) {
-    if(self::inSoundMode) {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-    else {
-      throw "Expected NullThrowError";
-    }
+    core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
   }
 }
diff --git a/pkg/front_end/testcases/dartdevc/issue49198.dart.weak.modular.expect b/pkg/front_end/testcases/dartdevc/issue49198.dart.weak.modular.expect
index 46b21df..6bc370a 100644
--- a/pkg/front_end/testcases/dartdevc/issue49198.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/dartdevc/issue49198.dart.weak.modular.expect
@@ -7,20 +7,7 @@
   try {
     throw (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForNonNullableByDefault} core::Object;
   }
-  on core::NullThrownError catch(final core::NullThrownError e) {
-    if(self::inSoundMode) {
-      throw "Expected TypeError";
-    }
-    else {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-  }
   on core::TypeError catch(final core::TypeError e) {
-    if(self::inSoundMode) {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-    else {
-      throw "Expected NullThrowError";
-    }
+    core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
   }
 }
diff --git a/pkg/front_end/testcases/dartdevc/issue49198.dart.weak.transformed.expect b/pkg/front_end/testcases/dartdevc/issue49198.dart.weak.transformed.expect
index 0147940..326e8bb 100644
--- a/pkg/front_end/testcases/dartdevc/issue49198.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/dartdevc/issue49198.dart.weak.transformed.expect
@@ -7,25 +7,12 @@
   try {
     throw (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForNonNullableByDefault} core::Object;
   }
-  on core::NullThrownError catch(final core::NullThrownError e) {
-    if(self::inSoundMode) {
-      throw "Expected TypeError";
-    }
-    else {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-  }
   on core::TypeError catch(final core::TypeError e) {
-    if(self::inSoundMode) {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-    else {
-      throw "Expected NullThrowError";
-    }
+    core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
   }
 }
 
 
 Extra constant evaluation status:
 Evaluated: AsExpression @ org-dartlang-testcase:///issue49198.dart:9:16 -> NullConstant(null)
-Extra constant evaluation: evaluated: 19, effectively constant: 1
+Extra constant evaluation: evaluated: 10, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/error_export_from_dill/main.dart.weak.expect b/pkg/front_end/testcases/general/error_export_from_dill/main.dart.weak.expect
index 208b7f2..67410f4 100644
--- a/pkg/front_end/testcases/general/error_export_from_dill/main.dart.weak.expect
+++ b/pkg/front_end/testcases/general/error_export_from_dill/main.dart.weak.expect
@@ -104,7 +104,6 @@
   core::Error,
   core::AssertionError,
   core::TypeError,
-  core::NullThrownError,
   core::ArgumentError,
   core::RangeError,
   core::IndexError,
diff --git a/pkg/front_end/testcases/general/error_export_from_dill/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/error_export_from_dill/main.dart.weak.outline.expect
index 59daf12..ed19572 100644
--- a/pkg/front_end/testcases/general/error_export_from_dill/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/error_export_from_dill/main.dart.weak.outline.expect
@@ -39,7 +39,6 @@
   core::Error,
   core::AssertionError,
   core::TypeError,
-  core::NullThrownError,
   core::ArgumentError,
   core::RangeError,
   core::IndexError,
diff --git a/pkg/front_end/testcases/general/error_export_from_dill/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_export_from_dill/main.dart.weak.transformed.expect
index d211e5b..28e4d78 100644
--- a/pkg/front_end/testcases/general/error_export_from_dill/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_export_from_dill/main.dart.weak.transformed.expect
@@ -100,7 +100,6 @@
   core::Error,
   core::AssertionError,
   core::TypeError,
-  core::NullThrownError,
   core::ArgumentError,
   core::RangeError,
   core::IndexError,
diff --git a/pkg/front_end/testcases/incremental/export_core.yaml.world.2.expect b/pkg/front_end/testcases/incremental/export_core.yaml.world.2.expect
index 97e1449..b9a075c 100644
--- a/pkg/front_end/testcases/incremental/export_core.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/export_core.yaml.world.2.expect
@@ -39,7 +39,6 @@
   core::Match,
   core::NoSuchMethodError,
   core::Null,
-  core::NullThrownError,
   core::Object,
   core::OutOfMemoryError,
   core::Pattern,
diff --git a/pkg/front_end/testcases/incremental/export_core.yaml.world.3.expect b/pkg/front_end/testcases/incremental/export_core.yaml.world.3.expect
index 78f1c0a..79de28b 100644
--- a/pkg/front_end/testcases/incremental/export_core.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/export_core.yaml.world.3.expect
@@ -39,7 +39,6 @@
   core::Match,
   core::NoSuchMethodError,
   core::Null,
-  core::NullThrownError,
   core::Object,
   core::OutOfMemoryError,
   core::Pattern,
diff --git a/pkg/front_end/testcases/nnbd/issue49198.dart b/pkg/front_end/testcases/nnbd/issue49198.dart
index 62e8c1a..9fe0c8c 100644
--- a/pkg/front_end/testcases/nnbd/issue49198.dart
+++ b/pkg/front_end/testcases/nnbd/issue49198.dart
@@ -7,17 +7,7 @@
 main() {
   try {
     throw null as dynamic;
-  } on NullThrownError catch (e) {
-    if (inSoundMode) {
-      throw 'Expected TypeError';
-    } else {
-      print('${e.runtimeType}:$e');
-    }
   } on TypeError catch (e) {
-    if (inSoundMode) {
-      print('${e.runtimeType}:$e');
-    } else {
-      throw 'Expected NullThrowError';
-    }
+    print('${e.runtimeType}:$e');
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue49198.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue49198.dart.strong.expect
index 46b21df..6bc370a 100644
--- a/pkg/front_end/testcases/nnbd/issue49198.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue49198.dart.strong.expect
@@ -7,20 +7,7 @@
   try {
     throw (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForNonNullableByDefault} core::Object;
   }
-  on core::NullThrownError catch(final core::NullThrownError e) {
-    if(self::inSoundMode) {
-      throw "Expected TypeError";
-    }
-    else {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-  }
   on core::TypeError catch(final core::TypeError e) {
-    if(self::inSoundMode) {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-    else {
-      throw "Expected NullThrowError";
-    }
+    core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue49198.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue49198.dart.strong.transformed.expect
index 2a97213..32b663c 100644
--- a/pkg/front_end/testcases/nnbd/issue49198.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue49198.dart.strong.transformed.expect
@@ -7,21 +7,8 @@
   try {
     throw let dynamic #t1 = null as{ForNonNullableByDefault} dynamic in #t1 == null ?{core::Object} #t1 as{TypeError,ForNonNullableByDefault} core::Object : #t1{core::Object};
   }
-  on core::NullThrownError catch(final core::NullThrownError e) {
-    if(self::inSoundMode) {
-      throw "Expected TypeError";
-    }
-    else {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-  }
   on core::TypeError catch(final core::TypeError e) {
-    if(self::inSoundMode) {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-    else {
-      throw "Expected NullThrowError";
-    }
+    core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
   }
 }
 
@@ -31,4 +18,4 @@
 Evaluated: EqualsNull @ org-dartlang-testcase:///issue49198.dart:9:5 -> BoolConstant(true)
 Evaluated: VariableGet @ org-dartlang-testcase:///issue49198.dart:9:16 -> NullConstant(null)
 Evaluated: VariableGet @ org-dartlang-testcase:///issue49198.dart:9:5 -> NullConstant(null)
-Extra constant evaluation: evaluated: 25, effectively constant: 4
+Extra constant evaluation: evaluated: 16, effectively constant: 4
diff --git a/pkg/front_end/testcases/nnbd/issue49198.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue49198.dart.weak.expect
index 46b21df..6bc370a 100644
--- a/pkg/front_end/testcases/nnbd/issue49198.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue49198.dart.weak.expect
@@ -7,20 +7,7 @@
   try {
     throw (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForNonNullableByDefault} core::Object;
   }
-  on core::NullThrownError catch(final core::NullThrownError e) {
-    if(self::inSoundMode) {
-      throw "Expected TypeError";
-    }
-    else {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-  }
   on core::TypeError catch(final core::TypeError e) {
-    if(self::inSoundMode) {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-    else {
-      throw "Expected NullThrowError";
-    }
+    core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue49198.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/issue49198.dart.weak.modular.expect
index 46b21df..6bc370a 100644
--- a/pkg/front_end/testcases/nnbd/issue49198.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd/issue49198.dart.weak.modular.expect
@@ -7,20 +7,7 @@
   try {
     throw (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForNonNullableByDefault} core::Object;
   }
-  on core::NullThrownError catch(final core::NullThrownError e) {
-    if(self::inSoundMode) {
-      throw "Expected TypeError";
-    }
-    else {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-  }
   on core::TypeError catch(final core::TypeError e) {
-    if(self::inSoundMode) {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-    else {
-      throw "Expected NullThrowError";
-    }
+    core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/issue49198.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue49198.dart.weak.transformed.expect
index 2de0fb8..98268a1 100644
--- a/pkg/front_end/testcases/nnbd/issue49198.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue49198.dart.weak.transformed.expect
@@ -7,25 +7,12 @@
   try {
     throw null as{ForNonNullableByDefault} dynamic;
   }
-  on core::NullThrownError catch(final core::NullThrownError e) {
-    if(self::inSoundMode) {
-      throw "Expected TypeError";
-    }
-    else {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-  }
   on core::TypeError catch(final core::TypeError e) {
-    if(self::inSoundMode) {
-      core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
-    }
-    else {
-      throw "Expected NullThrowError";
-    }
+    core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}");
   }
 }
 
 
 Extra constant evaluation status:
 Evaluated: AsExpression @ org-dartlang-testcase:///issue49198.dart:9:16 -> NullConstant(null)
-Extra constant evaluation: evaluated: 19, effectively constant: 1
+Extra constant evaluation: evaluated: 10, effectively constant: 1
diff --git a/runtime/tools/dartfuzz/dartfuzz.dart b/runtime/tools/dartfuzz/dartfuzz.dart
index d9e0a11..7194d5b 100644
--- a/runtime/tools/dartfuzz/dartfuzz.dart
+++ b/runtime/tools/dartfuzz/dartfuzz.dart
@@ -14,7 +14,7 @@
 // Version of DartFuzz. Increase this each time changes are made
 // to preserve the property that a given version of DartFuzz yields
 // the same fuzzed program for a deterministic random seed.
-const String version = '1.96';
+const String version = '1.97';
 
 // Restriction on statements and expressions.
 const int stmtDepth = 1;
diff --git a/runtime/tools/dartfuzz/dartfuzz_api_table.dart b/runtime/tools/dartfuzz/dartfuzz_api_table.dart
index 2c9772b..9079d61 100644
--- a/runtime/tools/dartfuzz/dartfuzz_api_table.dart
+++ b/runtime/tools/dartfuzz/dartfuzz_api_table.dart
@@ -2027,7 +2027,6 @@
         [DartType.INTEGERDIVISIONBYZEROEXCEPTION, DartType.VOID], true),
     DartLib('toString', [DartType.MAPENTRY_INT_STRING, DartType.VOID], true),
     DartLib('toString', [DartType.NULL, DartType.VOID], true),
-    DartLib('toString', [DartType.NULLTHROWNERROR, DartType.VOID], true),
     DartLib('toString', [DartType.STACKOVERFLOWERROR, DartType.VOID], true),
     DartLib('toString', [DartType.STATEERROR, DartType.VOID], true),
     DartLib('toString', [DartType.STRINGBUFFER, DartType.VOID], true),
@@ -2096,7 +2095,6 @@
         [DartType.INTEGERDIVISIONBYZEROEXCEPTION, DartType.VOID], true),
     DartLib('toString', [DartType.MAPENTRY_INT_STRING, DartType.VOID], true),
     DartLib('toString', [DartType.NULL, DartType.VOID], true),
-    DartLib('toString', [DartType.NULLTHROWNERROR, DartType.VOID], true),
     DartLib('toString', [DartType.STACKOVERFLOWERROR, DartType.VOID], true),
     DartLib('toString', [DartType.STATEERROR, DartType.VOID], true),
     DartLib('toString', [DartType.STRINGBUFFER, DartType.VOID], true),
diff --git a/runtime/tools/dartfuzz/dartfuzz_type_table.dart b/runtime/tools/dartfuzz/dartfuzz_type_table.dart
index d5eb01b..b462143 100644
--- a/runtime/tools/dartfuzz/dartfuzz_type_table.dart
+++ b/runtime/tools/dartfuzz/dartfuzz_type_table.dart
@@ -256,9 +256,6 @@
   static const TYPEERROR_NULLABLE = DartType._withName('TypeError', true);
   static const CASTERROR = DartType._withName('CastError', false);
   static const CASTERROR_NULLABLE = DartType._withName('CastError', true);
-  static const NULLTHROWNERROR = DartType._withName('NullThrownError', false);
-  static const NULLTHROWNERROR_NULLABLE =
-      DartType._withName('NullThrownError', true);
   static const ARGUMENTERROR = DartType._withName('ArgumentError', false);
   static const ARGUMENTERROR_NULLABLE =
       DartType._withName('ArgumentError', true);
@@ -23302,8 +23299,6 @@
     TYPEERROR_NULLABLE,
     CASTERROR,
     CASTERROR_NULLABLE,
-    NULLTHROWNERROR,
-    NULLTHROWNERROR_NULLABLE,
     ARGUMENTERROR,
     ARGUMENTERROR_NULLABLE,
     RANGEERROR,
@@ -80272,7 +80267,6 @@
       FALLTHROUGHERROR,
       INDEXERROR,
       INTEGERDIVISIONBYZEROEXCEPTION,
-      NULLTHROWNERROR,
       RANGEERROR,
       STACKOVERFLOWERROR,
       STATEERROR,
@@ -85382,7 +85376,6 @@
       MAP_WEAKREFERENCE_STRING_WEAKREFERENCE_INT,
       MAP_WEAKREFERENCE_STRING_WEAKREFERENCE_STRING,
       NULL,
-      NULLTHROWNERROR,
       NUM,
       RANGEERROR,
       REGEXP,
@@ -100419,9 +100412,6 @@
         WEAKREFERENCE_STRING,
       ],
     },
-    NULLTHROWNERROR: {
-      '': [],
-    },
     RANGEERROR: {
       '': [
         INT,
@@ -177088,21 +177078,6 @@
         NULL,
       },
     },
-    NULLTHROWNERROR: {
-      '=': {
-        NULLTHROWNERROR,
-      },
-    },
-    NULLTHROWNERROR_NULLABLE: {
-      '=': {
-        NULLTHROWNERROR,
-        NULLTHROWNERROR_NULLABLE,
-      },
-      '??=': {
-        NULLTHROWNERROR,
-        NULLTHROWNERROR_NULLABLE,
-      },
-    },
     NULL_NULLABLE: {
       '=': {
         NULL,
@@ -179034,8 +179009,6 @@
     DartType.TYPEERROR_NULLABLE,
     DartType.CASTERROR,
     DartType.CASTERROR_NULLABLE,
-    DartType.NULLTHROWNERROR,
-    DartType.NULLTHROWNERROR_NULLABLE,
     DartType.ARGUMENTERROR,
     DartType.ARGUMENTERROR_NULLABLE,
     DartType.RANGEERROR,
@@ -196650,7 +196623,6 @@
       DartType.FALLTHROUGHERROR,
       DartType.INDEXERROR,
       DartType.INTEGERDIVISIONBYZEROEXCEPTION,
-      DartType.NULLTHROWNERROR,
       DartType.RANGEERROR,
       DartType.STACKOVERFLOWERROR,
       DartType.STATEERROR,
@@ -198785,7 +198757,6 @@
       DartType.MAP_WEAKREFERENCE_STRING_WEAKREFERENCE_INT,
       DartType.MAP_WEAKREFERENCE_STRING_WEAKREFERENCE_STRING,
       DartType.NULL,
-      DartType.NULLTHROWNERROR,
       DartType.NUM,
       DartType.RANGEERROR,
       DartType.REGEXP,
@@ -205014,9 +204985,6 @@
         DartType.WEAKREFERENCE_STRING,
       ],
     },
-    DartType.NULLTHROWNERROR: {
-      '': [],
-    },
     DartType.RANGEERROR: {
       '': [
         DartType.INT,
@@ -260652,21 +260620,6 @@
         DartType.NULL,
       },
     },
-    DartType.NULLTHROWNERROR: {
-      '=': {
-        DartType.NULLTHROWNERROR,
-      },
-    },
-    DartType.NULLTHROWNERROR_NULLABLE: {
-      '=': {
-        DartType.NULLTHROWNERROR,
-        DartType.NULLTHROWNERROR_NULLABLE,
-      },
-      '??=': {
-        DartType.NULLTHROWNERROR,
-        DartType.NULLTHROWNERROR_NULLABLE,
-      },
-    },
     DartType.NULL_NULLABLE: {
       '=': {
         DartType.NULL,
@@ -262360,8 +262313,6 @@
     DartType.TYPEERROR_NULLABLE,
     DartType.CASTERROR,
     DartType.CASTERROR_NULLABLE,
-    DartType.NULLTHROWNERROR,
-    DartType.NULLTHROWNERROR_NULLABLE,
     DartType.ARGUMENTERROR,
     DartType.ARGUMENTERROR_NULLABLE,
     DartType.RANGEERROR,
@@ -263178,7 +263129,6 @@
       DartType.FALLTHROUGHERROR,
       DartType.INDEXERROR,
       DartType.INTEGERDIVISIONBYZEROEXCEPTION,
-      DartType.NULLTHROWNERROR,
       DartType.RANGEERROR,
       DartType.STACKOVERFLOWERROR,
       DartType.STATEERROR,
@@ -263331,7 +263281,6 @@
       DartType.MAP_STRING_INT,
       DartType.MAP_STRING_STRING,
       DartType.NULL,
-      DartType.NULLTHROWNERROR,
       DartType.NUM,
       DartType.RANGEERROR,
       DartType.REGEXP,
@@ -263714,9 +263663,6 @@
         DartType.STRING,
       ],
     },
-    DartType.NULLTHROWNERROR: {
-      '': [],
-    },
     DartType.RANGEERROR: {
       '': [
         DartType.INT,
@@ -305026,21 +304972,6 @@
         DartType.NULL,
       },
     },
-    DartType.NULLTHROWNERROR: {
-      '=': {
-        DartType.NULLTHROWNERROR,
-      },
-    },
-    DartType.NULLTHROWNERROR_NULLABLE: {
-      '=': {
-        DartType.NULLTHROWNERROR,
-        DartType.NULLTHROWNERROR_NULLABLE,
-      },
-      '??=': {
-        DartType.NULLTHROWNERROR,
-        DartType.NULLTHROWNERROR_NULLABLE,
-      },
-    },
     DartType.NULL_NULLABLE: {
       '=': {
         DartType.NULL,
@@ -306370,8 +306301,6 @@
     DartType.TYPEERROR_NULLABLE,
     DartType.CASTERROR,
     DartType.CASTERROR_NULLABLE,
-    DartType.NULLTHROWNERROR,
-    DartType.NULLTHROWNERROR_NULLABLE,
     DartType.ARGUMENTERROR,
     DartType.ARGUMENTERROR_NULLABLE,
     DartType.RANGEERROR,
@@ -306956,7 +306885,6 @@
       DartType.FALLTHROUGHERROR,
       DartType.INDEXERROR,
       DartType.INTEGERDIVISIONBYZEROEXCEPTION,
-      DartType.NULLTHROWNERROR,
       DartType.RANGEERROR,
       DartType.STACKOVERFLOWERROR,
       DartType.STATEERROR,
@@ -307062,7 +306990,6 @@
       DartType.MAP_STRING_INT,
       DartType.MAP_STRING_STRING,
       DartType.NULL,
-      DartType.NULLTHROWNERROR,
       DartType.NUM,
       DartType.RANGEERROR,
       DartType.REGEXP,
@@ -307331,9 +307258,6 @@
         DartType.STRING,
       ],
     },
-    DartType.NULLTHROWNERROR: {
-      '': [],
-    },
     DartType.RANGEERROR: {
       '': [
         DartType.INT,
@@ -348302,21 +348226,6 @@
         DartType.NULL,
       },
     },
-    DartType.NULLTHROWNERROR: {
-      '=': {
-        DartType.NULLTHROWNERROR,
-      },
-    },
-    DartType.NULLTHROWNERROR_NULLABLE: {
-      '=': {
-        DartType.NULLTHROWNERROR,
-        DartType.NULLTHROWNERROR_NULLABLE,
-      },
-      '??=': {
-        DartType.NULLTHROWNERROR,
-        DartType.NULLTHROWNERROR_NULLABLE,
-      },
-    },
     DartType.NULL_NULLABLE: {
       '=': {
         DartType.NULL,
diff --git a/runtime/tools/dartfuzz/gen_api_table.dart b/runtime/tools/dartfuzz/gen_api_table.dart
index e728d52..c4d9f62 100644
--- a/runtime/tools/dartfuzz/gen_api_table.dart
+++ b/runtime/tools/dartfuzz/gen_api_table.dart
@@ -80,7 +80,6 @@
 const mapEntryIntStringEncoding = 'DartType.MAPENTRY_INT_STRING';
 const mapIntStringEncoding = 'DartType.MAP_INT_STRING';
 const nullEncoding = 'DartType.NULL';
-const nullThrownErrorEncoding = 'DartType.NULLTHROWNERROR';
 const numEncoding = 'DartType.NUM';
 const provisionalEncoding = 'DartType.PROVISIONAL';
 const rangeErrorEncoding = 'DartType.RANGEERROR';
@@ -140,7 +139,6 @@
 final mapEntryIntStringLibs = 'mapEntryIntStringLibs';
 final mapLibs = 'mapLibs';
 final nullLibs = 'nullLibs';
-final nullThrownErrorLibs = 'nullThrownErrorLibs';
 final numLibs = 'numLibs';
 final provisionalLibs = 'provisionalLibs';
 final rangeErrorLibs = 'rangeErrorLibs';
@@ -202,7 +200,6 @@
     mapEntryIntStringEncoding: mapEntryIntStringLibs,
     mapIntStringEncoding: mapLibs,
     nullEncoding: nullLibs,
-    nullThrownErrorEncoding: nullThrownErrorLibs,
     numEncoding: numLibs,
     provisionalEncoding: provisionalLibs,
     rangeErrorEncoding: rangeErrorLibs,
@@ -272,7 +269,6 @@
     mapEntryIntStringEncoding,
     mapIntStringEncoding,
     nullEncoding,
-    nullThrownErrorEncoding,
     numEncoding,
     provisionalEncoding,
     rangeErrorEncoding,
@@ -553,8 +549,6 @@
       return mapEntryIntStringEncoding;
     case 'Null':
       return nullEncoding;
-    case 'NullThrownError':
-      return nullThrownErrorEncoding;
     case 'Provisional':
       return provisionalEncoding;
     case 'RangeError':
diff --git a/runtime/vm/exceptions.cc b/runtime/vm/exceptions.cc
index f3afcf2..4a5d5a4 100644
--- a/runtime/vm/exceptions.cc
+++ b/runtime/vm/exceptions.cc
@@ -732,8 +732,13 @@
   bool use_preallocated_stacktrace = false;
   Instance& exception = Instance::Handle(zone, incoming_exception.ptr());
   if (exception.IsNull()) {
-    exception ^=
-        Exceptions::Create(Exceptions::kNullThrown, Object::empty_array());
+    const Array& args = Array::Handle(zone, Array::New(4));
+    const Smi& line_col = Smi::Handle(zone, Smi::New(-1));
+    args.SetAt(0, Symbols::OptimizedOut());
+    args.SetAt(1, line_col);
+    args.SetAt(2, line_col);
+    args.SetAt(3, String::Handle(String::New("Throw of null.")));
+    exception ^= Exceptions::Create(Exceptions::kType, args);
   } else if (existing_stacktrace.IsNull() &&
              (exception.ptr() == object_store->out_of_memory() ||
               exception.ptr() == object_store->stack_overflow())) {
@@ -1134,10 +1139,6 @@
       library = Library::CoreLibrary();
       class_name = &Symbols::UnsupportedError();
       break;
-    case kNullThrown:
-      library = Library::CoreLibrary();
-      class_name = &Symbols::NullThrownError();
-      break;
     case kIsolateSpawn:
       library = Library::IsolateLibrary();
       class_name = &Symbols::IsolateSpawnException();
diff --git a/runtime/vm/exceptions.h b/runtime/vm/exceptions.h
index d7b7367..1af67ac 100644
--- a/runtime/vm/exceptions.h
+++ b/runtime/vm/exceptions.h
@@ -61,7 +61,6 @@
     kUnsupported,
     kStackOverflow,
     kOutOfMemory,
-    kNullThrown,
     kIsolateSpawn,
     kAssertion,
     kType,
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index ddbd4e4..9cbb991 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -7420,7 +7420,7 @@
 
 ISOLATE_UNIT_TEST_CASE(Symbols_FromConcatAll) {
   {
-    const String* data[3] = {&Symbols::NullThrownError(), &Symbols::Dot(),
+    const String* data[3] = {&Symbols::TypeError(), &Symbols::Dot(),
                              &Symbols::isPaused()};
     CheckConcatAll(data, 3);
   }
@@ -7475,7 +7475,7 @@
 
   {
     const String& empty = String::Handle(String::New(""));
-    const String* data[3] = {&Symbols::NullThrownError(), &empty,
+    const String* data[3] = {&Symbols::TypeError(), &empty,
                              &Symbols::isPaused()};
     CheckConcatAll(data, 3);
   }
diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h
index ac40249..0cc1eed 100644
--- a/runtime/vm/symbols.h
+++ b/runtime/vm/symbols.h
@@ -200,7 +200,6 @@
   V(NoSuchMethod, "noSuchMethod")                                              \
   V(NoSuchMethodError, "NoSuchMethodError")                                    \
   V(Null, "Null")                                                              \
-  V(NullThrownError, "NullThrownError")                                        \
   V(Number, "num")                                                             \
   V(Object, "Object")                                                          \
   V(ObjectPool, "ObjectPool")                                                  \
diff --git a/sdk/lib/core/errors.dart b/sdk/lib/core/errors.dart
index 82beca1..b6e4aee 100644
--- a/sdk/lib/core/errors.dart
+++ b/sdk/lib/core/errors.dart
@@ -142,17 +142,6 @@
 /// Error thrown by the runtime system when a dynamic type error happens.
 class TypeError extends Error {}
 
-/// Error thrown when attempting to throw `null`.
-///
-/// In null safe code, you are statically disallowed from throwing `null`,
-/// so this error will go away when non-null safe code stops being supported.
-@Deprecated("Use TypeError instead")
-class NullThrownError extends Error implements TypeError {
-  @pragma("vm:entry-point")
-  NullThrownError();
-  String toString() => "Throw of null.";
-}
-
 /// Error thrown when a function is passed an unacceptable argument.
 ///
 /// The method should document restrictions on the arguments it accepts,