mirror of
https://github.com/dart-lang/sdk
synced 2024-09-18 20:11:19 +00:00
6005e923d8
The `regress` folder in tests/web and tests/web_2 has been renamed to `issue`. All issue-numbered tests have been placed there; other tests have been moved out of that folder. Change-Id: I4534d34b2ef21f7accc45c3ce097d9be74845e4d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/235984 Reviewed-by: Joshua Litt <joshualitt@google.com> Commit-Queue: Mayank Patke <fishythefish@google.com>
58 lines
1.1 KiB
Dart
58 lines
1.1 KiB
Dart
// 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.
|
|
|
|
// 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()));
|
|
}
|