| // 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. | |
| // Formatting can break multitests, so don't format them. | |
| // dart format off | |
| // 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())); | |
| } |