[dart2js] Add failing tests for issue #45046.

Bug: https://github.com/dart-lang/sdk/issues/45046
Change-Id: I6b0010b78c1781c9c264b9a479dc2136ded3105c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/185495
Reviewed-by: Stephen Adams <sra@google.com>
diff --git a/tests/web/45046_test.dart b/tests/web/45046_test.dart
new file mode 100644
index 0000000..1e4f9b1
--- /dev/null
+++ b/tests/web/45046_test.dart
@@ -0,0 +1,22 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'package:expect/expect.dart';
+
+class A {}
+
+class B extends A {}
+
+class Foo<T> {}
+
+T cast<T>(dynamic x) => x as T;
+
+void test(Foo<A> Function(dynamic) f) {
+  var foo = Foo<B>();
+  Expect.identical(foo, f(foo));
+}
+
+void main() {
+  test(cast);
+}
diff --git a/tests/web_2/45046_test.dart b/tests/web_2/45046_test.dart
new file mode 100644
index 0000000..7f5333e
--- /dev/null
+++ b/tests/web_2/45046_test.dart
@@ -0,0 +1,24 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// @dart = 2.7
+
+import 'package:expect/expect.dart';
+
+class A {}
+
+class B extends A {}
+
+class Foo<T> {}
+
+T cast<T>(dynamic x) => x as T;
+
+void test(Foo<A> Function(dynamic) f) {
+  var foo = Foo<B>();
+  Expect.identical(foo, f(foo));
+}
+
+void main() {
+  test(cast);
+}