| // Copyright (c) 2018, 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.9 |
| |
| // This is a regression test for http://dartbug.com/40248. |
| |
| import "package:expect/expect.dart"; |
| |
| class Base { |
| set push(int x); |
| set float(covariant int x); |
| noSuchMethod(i) => print("${runtimeType}: ${i.positionalArguments[0]}"); |
| } |
| |
| class Me extends Base {} |
| |
| class You extends Base { |
| set push(num x); |
| set float(num x); |
| } |
| |
| main() { |
| List<Base> list = [Me(), You()]; |
| for (Base baba in list) { |
| baba.push = 0; |
| baba.float = 1; |
| if (baba is You) { |
| baba.push = 2.3; |
| baba.float = 4.5; |
| } |
| try { |
| (baba as dynamic).push = 6.7; |
| Expect.isTrue(baba is You); |
| } on TypeError { |
| Expect.isTrue(baba is Me); |
| } |
| try { |
| (baba as dynamic).float = 8.9; |
| Expect.isTrue(baba is You); |
| } on TypeError { |
| Expect.isTrue(baba is Me); |
| } |
| } |
| } |