dart-sdk/tests/web/if_method_call_test.dart
Mayank Patke 6005e923d8 [dart2js] Rename issue-specific tests.
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>
2022-03-09 22:18:27 +00:00

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()));
}