Index: pkg/front_end/testcases/inference/infer_field_override_getter_overrides_setter.dart |
diff --git a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart b/pkg/front_end/testcases/inference/infer_field_override_getter_overrides_setter.dart |
similarity index 56% |
copy from pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart |
copy to pkg/front_end/testcases/inference/infer_field_override_getter_overrides_setter.dart |
index c8bf6f91deec52a3838f850b10dc3a222cb71835..bde28bd4b95c89d7aa8df1054303a42ccde32dc1 100644 |
--- a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart |
+++ b/pkg/front_end/testcases/inference/infer_field_override_getter_overrides_setter.dart |
@@ -5,15 +5,18 @@ |
/*@testedFeatures=inference*/ |
library test; |
-class A { |
- var /*@topType=dynamic*/ x; |
+abstract class A { |
+ void set x(num value); |
} |
-class B implements A { |
- var /*@topType=dynamic*/ x = 2; |
+abstract class B extends A { |
+ int get x; |
} |
-foo() { |
- String y = /*info:DYNAMIC_CAST*/ new B(). /*@target=B::x*/ x; |
- int z = /*info:DYNAMIC_CAST*/ new B(). /*@target=B::x*/ x; |
+// The getter in B doesn't screen the setter in A, so inference sees two |
+// different types and gives an error. |
+class C extends B { |
+ var /*@topType=dynamic*/ x; |
} |
+ |
+main() {} |