| // 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.9 |
| |
| // Regression test for bug in dart2js type promotion. |
| |
| import 'package:expect/expect.dart'; |
| |
| staticMethod(a) => true; |
| |
| class Super { |
| superMethod(a) => true; |
| } |
| |
| class Class extends Super { |
| instanceMethod(a) => true; |
| |
| test1(c) { |
| if (super.superMethod(c is Class2)) { |
| return c.method(); |
| } |
| return 0; |
| } |
| |
| test2(c) { |
| if (this.instanceMethod(c is Class2)) { |
| return c.method(); |
| } |
| return 0; |
| } |
| } |
| |
| class Class1 { |
| method() => 87; |
| } |
| |
| class Class2 { |
| method() => 42; |
| } |
| |
| test(c) { |
| if (staticMethod(c is Class2)) { |
| return c.method(); |
| } |
| return 0; |
| } |
| |
| main() { |
| Expect.equals(87, test(new Class1())); //# 01: ok |
| Expect.equals(42, test(new Class2())); |
| |
| Expect.equals(87, new Class().test1(new Class1())); //# 02: ok |
| Expect.equals(42, new Class().test1(new Class2())); |
| |
| Expect.equals(87, new Class().test2(new Class1())); //# 03: ok |
| Expect.equals(42, new Class().test2(new Class2())); |
| } |