bfee879e19
Dart2js type promotion wrongfully uses the type promotion result of the last argument of an invocation as the result of the invocation itself. Change-Id: I188514fdac4edbea24dffbd858c0f8be6cd6ccf0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/185781 Reviewed-by: Mayank Patke <fishythefish@google.com> Commit-Queue: Johnni Winther <johnniwinther@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()));
|
|
}
|