[CFE] Reproduction of weekly bot run 91 failure

This reproduces a serialization crash discovered by the weekly bot run
no 91.

Note that it crashes on an error case.

A variation that doesn't crash is also added. The variation makes me
think it has to do with the named parameters anywhere feature.

This was extracted from the fuzz failure on
weak/inference_update_1/horizontal_inference_extension_method

Issue http://dartbug.com/49040

Change-Id: I599952ae8261a07d5c558ce27c0e95d0375bc743
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/245004
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart
new file mode 100644
index 0000000..e5661c0
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure_lib.dart';
+
+extension on int {
+  void _foo<T>(void Function(T) x, {required T a}) => throw '';
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.textual_outline.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.textual_outline.expect
new file mode 100644
index 0000000..e5661c0
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.textual_outline.expect
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure_lib.dart';
+
+extension on int {
+  void _foo<T>(void Function(T) x, {required T a}) => throw '';
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..e5661c0
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.textual_outline_modelled.expect
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure_lib.dart';
+
+extension on int {
+  void _foo<T>(void Function(T) x, {required T a}) => throw '';
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.expect
new file mode 100644
index 0000000..95402af
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.expect
@@ -0,0 +1,42 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_lib.dart";
+
+extension _extension#0 on core::int {
+  method _foo = self::_extension#0|_foo;
+  tearoff _foo = self::_extension#0|get#_foo;
+}
+static method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a = #C1}) → void
+  return throw "";
+static method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {T% a = #C1}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static method main() → dynamic {}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+//   i._foo(a: 0, (x) {
+//     ^^^^
+//
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure.dart";
+
+static method bar(core::int i) → dynamic {
+  invalid-expression "pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+  i._foo(a: 0, (x) {
+    ^^^^" in i{<unresolved>}._foo((dynamic x) → Null {
+    x;
+  }, a: #t1);
+}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.modular.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.modular.expect
new file mode 100644
index 0000000..95402af
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.modular.expect
@@ -0,0 +1,42 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_lib.dart";
+
+extension _extension#0 on core::int {
+  method _foo = self::_extension#0|_foo;
+  tearoff _foo = self::_extension#0|get#_foo;
+}
+static method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a = #C1}) → void
+  return throw "";
+static method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {T% a = #C1}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static method main() → dynamic {}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+//   i._foo(a: 0, (x) {
+//     ^^^^
+//
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure.dart";
+
+static method bar(core::int i) → dynamic {
+  invalid-expression "pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+  i._foo(a: 0, (x) {
+    ^^^^" in i{<unresolved>}._foo((dynamic x) → Null {
+    x;
+  }, a: #t1);
+}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.outline.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.outline.expect
new file mode 100644
index 0000000..d05e48f
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.outline.expect
@@ -0,0 +1,25 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_lib.dart";
+
+extension _extension#0 on core::int {
+  method _foo = self::_extension#0|_foo;
+  tearoff _foo = self::_extension#0|get#_foo;
+}
+static method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
+  ;
+static method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static method main() → dynamic
+  ;
+
+library /*isNonNullableByDefault*/;
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure.dart";
+
+static method bar(core::int i) → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_lib.dart b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_lib.dart
new file mode 100644
index 0000000..7570e46
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_lib.dart
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure.dart';
+
+bar(int i) {
+  i._foo(a: 0, (x) {
+    x;
+  });
+}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart
new file mode 100644
index 0000000..26dff41
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure_variation_1_lib.dart';
+
+extension on int {
+  void _foo<T>(void Function(T) x, {required T a}) => throw '';
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.textual_outline.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.textual_outline.expect
new file mode 100644
index 0000000..26dff41
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.textual_outline.expect
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure_variation_1_lib.dart';
+
+extension on int {
+  void _foo<T>(void Function(T) x, {required T a}) => throw '';
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..26dff41
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.textual_outline_modelled.expect
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure_variation_1_lib.dart';
+
+extension on int {
+  void _foo<T>(void Function(T) x, {required T a}) => throw '';
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.expect
new file mode 100644
index 0000000..7e86e82
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.expect
@@ -0,0 +1,42 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1_lib.dart";
+
+extension _extension#0 on core::int {
+  method _foo = self::_extension#0|_foo;
+  tearoff _foo = self::_extension#0|get#_foo;
+}
+static method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a = #C1}) → void
+  return throw "";
+static method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {T% a = #C1}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static method main() → dynamic {}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+//   i._foo((x) {
+//     ^^^^
+//
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1.dart";
+
+static method bar(core::int i) → dynamic {
+  invalid-expression "pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+  i._foo((x) {
+    ^^^^" in i{<unresolved>}._foo((dynamic x) → Null {
+    x;
+  }, a: 0);
+}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.modular.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.modular.expect
new file mode 100644
index 0000000..7e86e82
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.modular.expect
@@ -0,0 +1,42 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1_lib.dart";
+
+extension _extension#0 on core::int {
+  method _foo = self::_extension#0|_foo;
+  tearoff _foo = self::_extension#0|get#_foo;
+}
+static method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a = #C1}) → void
+  return throw "";
+static method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {T% a = #C1}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static method main() → dynamic {}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+//   i._foo((x) {
+//     ^^^^
+//
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1.dart";
+
+static method bar(core::int i) → dynamic {
+  invalid-expression "pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+  i._foo((x) {
+    ^^^^" in i{<unresolved>}._foo((dynamic x) → Null {
+    x;
+  }, a: 0);
+}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.outline.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.outline.expect
new file mode 100644
index 0000000..e74ddb8
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.outline.expect
@@ -0,0 +1,25 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1_lib.dart";
+
+extension _extension#0 on core::int {
+  method _foo = self::_extension#0|_foo;
+  tearoff _foo = self::_extension#0|get#_foo;
+}
+static method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
+  ;
+static method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static method main() → dynamic
+  ;
+
+library /*isNonNullableByDefault*/;
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1.dart";
+
+static method bar(core::int i) → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.transformed.expect
new file mode 100644
index 0000000..7e86e82
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.transformed.expect
@@ -0,0 +1,42 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1_lib.dart";
+
+extension _extension#0 on core::int {
+  method _foo = self::_extension#0|_foo;
+  tearoff _foo = self::_extension#0|get#_foo;
+}
+static method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a = #C1}) → void
+  return throw "";
+static method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {T% a = #C1}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static method main() → dynamic {}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+//   i._foo((x) {
+//     ^^^^
+//
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1.dart";
+
+static method bar(core::int i) → dynamic {
+  invalid-expression "pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+  i._foo((x) {
+    ^^^^" in i{<unresolved>}._foo((dynamic x) → Null {
+    x;
+  }, a: 0);
+}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart
new file mode 100644
index 0000000..0611970
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure_variation_1.dart';
+
+bar(int i) {
+  i._foo((x) {
+    x;
+  }, a: 0);
+}
diff --git a/pkg/front_end/testcases/modular.status b/pkg/front_end/testcases/modular.status
index b2aa3a1..e478644 100644
--- a/pkg/front_end/testcases/modular.status
+++ b/pkg/front_end/testcases/modular.status
@@ -29,6 +29,7 @@
 general/crashes/crash_02/main: Crash
 general/crashes/crash_06/main: Crash
 general/duplicated_declarations: TypeCheckError
+general/error_recovery/weekly_bot_91_failure: Crash
 general/getter_vs_setter_type: TypeCheckError
 general/implement_semi_stub: TypeCheckError
 general/implicit_super_call: TypeCheckError
diff --git a/pkg/front_end/testcases/text_serialization.status b/pkg/front_end/testcases/text_serialization.status
index 4025cef..09865af 100644
--- a/pkg/front_end/testcases/text_serialization.status
+++ b/pkg/front_end/testcases/text_serialization.status
@@ -78,6 +78,7 @@
 general/error_recovery/issue_39958_02: RuntimeError
 general/error_recovery/issue_39958_03: RuntimeError
 general/error_recovery/issue_39958_04: RuntimeError
+general/error_recovery/weekly_bot_91_failure: Crash
 general/error_recovery/yield_not_in_generator: RuntimeError
 general/expressions: RuntimeError
 general/getter_vs_setter_type: TypeCheckError
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index 50e8f90..db831f6 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -168,6 +168,7 @@
 general/error_recovery/issue_39958_02: RuntimeError
 general/error_recovery/issue_39958_03: RuntimeError
 general/error_recovery/issue_39958_04: RuntimeError
+general/error_recovery/weekly_bot_91_failure: Crash
 general/error_recovery/yield_not_in_generator: RuntimeError
 general/expressions: RuntimeError
 general/getter_vs_setter_type: TypeCheckError