blob: 62f20ed634991c40a396ef648b4d72a2b2b70e5b [file] [log] [blame]
// 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()));
}