Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Unified Diff: pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect

Issue 2864853002: Fix constructor invocation type inference. (Closed)
Patch Set: Rebase and remove unnecessary changes Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect
new file mode 100644
index 0000000000000000000000000000000000000000..147c9f7974f247ab5b50826c8f57cc71345e1c51
--- /dev/null
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect
@@ -0,0 +1,112 @@
+library test;
+import self as self;
+import "dart:core" as core;
+
+class A<S extends core::Object, T extends core::Object> extends core::Object {
+ field self::A::S x;
+ field self::A::T y;
+ constructor •(dynamic x, dynamic y) → void
+ : self::A::x = x, self::A::y = y, super core::Object::•()
+ ;
+ constructor named(dynamic x, dynamic y) → void
+ : self::A::x = x, self::A::y = y, super core::Object::•()
+ ;
+}
+class B<S extends core::Object, T extends core::Object> extends self::A<self::B::T, self::B::S> {
+ constructor •(self::B::S y, self::B::T x) → void
+ : super self::A::•(x, y)
+ ;
+ constructor named(self::B::S y, self::B::T x) → void
+ : super self::A::named(x, y)
+ ;
+}
+class C<S extends core::Object> extends self::B<self::C::S, self::C::S> {
+ constructor •(self::C::S a) → void
+ : super self::B::•(a, a)
+ ;
+ constructor named(self::C::S a) → void
+ : super self::B::named(a, a)
+ ;
+}
+class D<S extends core::Object, T extends core::Object> extends self::B<self::D::T, core::int> {
+ constructor •(self::D::T a) → void
+ : super self::B::•(a, 3)
+ ;
+ constructor named(self::D::T a) → void
+ : super self::B::named(a, 3)
+ ;
+}
+class E<S extends core::Object, T extends core::Object> extends self::A<self::C<self::E::S>, self::E::T> {
+ constructor •(self::E::T a) → void
+ : super self::A::•(null, a)
+ ;
+}
+class F<S extends core::Object, T extends core::Object> extends self::A<self::F::S, self::F::T> {
+ constructor •(self::F::S x, self::F::T y, {core::List<self::F::S> a = null, core::List<self::F::T> b = null}) → void
+ : super self::A::•(x, y)
+ ;
+ constructor named(self::F::S x, self::F::T y, [self::F::S a = null, self::F::T b = null]) → void
+ : super self::A::•(a, b)
+ ;
+}
+static method main() → void {
+ {
+ self::A<core::int, core::String> a0 = new self::A::•<core::int, core::String>(3, "hello");
+ self::A<core::int, core::String> a1 = new self::A::named<core::int, core::String>(3, "hello");
+ self::A<core::int, core::String> a2 = new self::A::•<core::int, core::String>(3, "hello");
+ self::A<core::int, core::String> a3 = new self::A::named<core::int, core::String>(3, "hello");
+ self::A<core::int, core::String> a4 = new self::A::•<core::int, dynamic>(3, "hello");
+ self::A<core::int, core::String> a5 = new self::A::named<dynamic, dynamic>(3, "hello");
+ }
+ {
+ self::A<core::int, core::String> a0 = new self::A::•<core::int, core::String>("hello", 3);
+ self::A<core::int, core::String> a1 = new self::A::named<core::int, core::String>("hello", 3);
+ }
+ {
+ self::A<core::int, core::String> a0 = new self::B::•<core::String, core::int>("hello", 3);
+ self::A<core::int, core::String> a1 = new self::B::named<core::String, core::int>("hello", 3);
+ self::A<core::int, core::String> a2 = new self::B::•<core::String, core::int>("hello", 3);
+ self::A<core::int, core::String> a3 = new self::B::named<core::String, core::int>("hello", 3);
+ self::A<core::int, core::String> a4 = new self::B::•<core::String, dynamic>("hello", 3);
+ self::A<core::int, core::String> a5 = new self::B::named<dynamic, dynamic>("hello", 3);
+ }
+ {
+ self::A<core::int, core::String> a0 = new self::B::•<core::String, core::int>(3, "hello");
+ self::A<core::int, core::String> a1 = new self::B::named<core::String, core::int>(3, "hello");
+ }
+ {
+ self::A<core::int, core::int> a0 = new self::C::•<core::int>(3);
+ self::A<core::int, core::int> a1 = new self::C::named<core::int>(3);
+ self::A<core::int, core::int> a2 = new self::C::•<core::int>(3);
+ self::A<core::int, core::int> a3 = new self::C::named<core::int>(3);
+ self::A<core::int, core::int> a4 = new self::C::•<dynamic>(3);
+ self::A<core::int, core::int> a5 = new self::C::named<dynamic>(3);
+ }
+ {
+ self::A<core::int, core::int> a0 = new self::C::•<core::int>("hello");
+ self::A<core::int, core::int> a1 = new self::C::named<core::int>("hello");
+ }
+ {
+ self::A<core::int, core::String> a0 = new self::D::•<dynamic, core::String>("hello");
+ self::A<core::int, core::String> a1 = new self::D::named<dynamic, core::String>("hello");
+ self::A<core::int, core::String> a2 = new self::D::•<core::int, core::String>("hello");
+ self::A<core::int, core::String> a3 = new self::D::named<core::String, core::String>("hello");
+ self::A<core::int, core::String> a4 = new self::D::•<core::num, dynamic>("hello");
+ self::A<core::int, core::String> a5 = new self::D::named<dynamic, dynamic>("hello");
+ }
+ {
+ self::A<core::int, core::String> a0 = new self::D::•<dynamic, core::String>(3);
+ self::A<core::int, core::String> a1 = new self::D::named<dynamic, core::String>(3);
+ }
+ {
+ self::A<self::C<core::int>, core::String> a0 = new self::E::•<core::int, core::String>("hello");
+ }
+ {
+ self::A<core::int, core::String> a0 = new self::F::•<core::int, core::String>(3, "hello", a: <core::int>[3], b: <core::String>["hello"]);
+ self::A<core::int, core::String> a1 = new self::F::•<core::int, core::String>(3, "hello", a: <core::int>["hello"], b: <core::String>[3]);
+ self::A<core::int, core::String> a2 = new self::F::named<core::int, core::String>(3, "hello", 3, "hello");
+ self::A<core::int, core::String> a3 = new self::F::named<core::int, core::String>(3, "hello");
+ self::A<core::int, core::String> a4 = new self::F::named<core::int, core::String>(3, "hello", "hello", 3);
+ self::A<core::int, core::String> a5 = new self::F::named<core::int, core::String>(3, "hello", "hello");
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698