| Index: tests/compiler/dart2js/least_upper_bound_test.dart
|
| diff --git a/tests/compiler/dart2js/least_upper_bound_test.dart b/tests/compiler/dart2js/least_upper_bound_test.dart
|
| index 7f15f88084e12c2a96dab4c7ed89f74e26ab4f1f..c184635a9545e7229624444a201d3f5ce85f4178 100644
|
| --- a/tests/compiler/dart2js/least_upper_bound_test.dart
|
| +++ b/tests/compiler/dart2js/least_upper_bound_test.dart
|
| @@ -7,8 +7,7 @@ library least_upper_bound_test;
|
| import 'package:expect/expect.dart';
|
| import 'package:async_helper/async_helper.dart';
|
| import 'package:compiler/src/dart_types.dart';
|
| -import 'package:compiler/src/elements/elements.dart'
|
| - show Element, ClassElement;
|
| +import 'package:compiler/src/elements/elements.dart' show Element, ClassElement;
|
|
|
| import 'type_test_helper.dart';
|
|
|
| @@ -28,49 +27,48 @@ void testInterface1() {
|
| class I implements A, B {}
|
| class J implements A, B {}
|
| """).then((env) {
|
| -
|
| - DartType Object_ = env['Object'];
|
| - DartType A = env['A'];
|
| - DartType B = env['B'];
|
| - DartType I = env['I'];
|
| - DartType J = env['J'];
|
| -
|
| - checkLub(DartType a, DartType b, DartType expect) {
|
| - DartType lub = env.computeLeastUpperBound(a, b);
|
| - Expect.equals(expect, lub,
|
| - 'Unexpected lub($a,$b) = $lub, expected $expect.');
|
| - }
|
| -
|
| - checkLub(Object_, Object_, Object_);
|
| - checkLub(Object_, A, Object_);
|
| - checkLub(Object_, B, Object_);
|
| - checkLub(Object_, I, Object_);
|
| - checkLub(Object_, J, Object_);
|
| -
|
| - checkLub(A, Object_, Object_);
|
| - checkLub(A, A, A);
|
| - checkLub(A, B, Object_);
|
| - checkLub(A, I, A);
|
| - checkLub(A, J, A);
|
| -
|
| - checkLub(B, Object_, Object_);
|
| - checkLub(B, A, Object_);
|
| - checkLub(B, B, B);
|
| - checkLub(B, I, B);
|
| - checkLub(B, J, B);
|
| -
|
| - checkLub(I, Object_, Object_);
|
| - checkLub(I, A, A);
|
| - checkLub(I, B, B);
|
| - checkLub(I, I, I);
|
| - checkLub(I, J, Object_);
|
| -
|
| - checkLub(J, Object_, Object_);
|
| - checkLub(J, A, A);
|
| - checkLub(J, B, B);
|
| - checkLub(J, I, Object_);
|
| - checkLub(J, J, J);
|
| - }));
|
| + DartType Object_ = env['Object'];
|
| + DartType A = env['A'];
|
| + DartType B = env['B'];
|
| + DartType I = env['I'];
|
| + DartType J = env['J'];
|
| +
|
| + checkLub(DartType a, DartType b, DartType expect) {
|
| + DartType lub = env.computeLeastUpperBound(a, b);
|
| + Expect.equals(
|
| + expect, lub, 'Unexpected lub($a,$b) = $lub, expected $expect.');
|
| + }
|
| +
|
| + checkLub(Object_, Object_, Object_);
|
| + checkLub(Object_, A, Object_);
|
| + checkLub(Object_, B, Object_);
|
| + checkLub(Object_, I, Object_);
|
| + checkLub(Object_, J, Object_);
|
| +
|
| + checkLub(A, Object_, Object_);
|
| + checkLub(A, A, A);
|
| + checkLub(A, B, Object_);
|
| + checkLub(A, I, A);
|
| + checkLub(A, J, A);
|
| +
|
| + checkLub(B, Object_, Object_);
|
| + checkLub(B, A, Object_);
|
| + checkLub(B, B, B);
|
| + checkLub(B, I, B);
|
| + checkLub(B, J, B);
|
| +
|
| + checkLub(I, Object_, Object_);
|
| + checkLub(I, A, A);
|
| + checkLub(I, B, B);
|
| + checkLub(I, I, I);
|
| + checkLub(I, J, Object_);
|
| +
|
| + checkLub(J, Object_, Object_);
|
| + checkLub(J, A, A);
|
| + checkLub(J, B, B);
|
| + checkLub(J, I, Object_);
|
| + checkLub(J, J, J);
|
| + }));
|
| }
|
|
|
| void testInterface2() {
|
| @@ -81,62 +79,61 @@ void testInterface2() {
|
| class I implements A, C {}
|
| class J implements A, C {}
|
| """).then((env) {
|
| -
|
| - DartType Object_ = env['Object'];
|
| - DartType A = env['A'];
|
| - DartType B = env['B'];
|
| - DartType C = env['C'];
|
| - DartType I = env['I'];
|
| - DartType J = env['J'];
|
| -
|
| - checkLub(DartType a, DartType b, DartType expectedLub) {
|
| - DartType lub = env.computeLeastUpperBound(a, b);
|
| - Expect.equals(expectedLub, lub,
|
| - 'Unexpected lub($a,$b) = $lub, expected $expectedLub');
|
| - }
|
| -
|
| - checkLub(Object_, Object_, Object_);
|
| - checkLub(Object_, A, Object_);
|
| - checkLub(Object_, B, Object_);
|
| - checkLub(Object_, C, Object_);
|
| - checkLub(Object_, I, Object_);
|
| - checkLub(Object_, J, Object_);
|
| -
|
| - checkLub(A, Object_, Object_);
|
| - checkLub(A, A, A);
|
| - checkLub(A, B, Object_);
|
| - checkLub(A, C, Object_);
|
| - checkLub(A, I, A);
|
| - checkLub(A, J, A);
|
| -
|
| - checkLub(B, Object_, Object_);
|
| - checkLub(B, A, Object_);
|
| - checkLub(B, B, B);
|
| - checkLub(B, C, B);
|
| - checkLub(B, I, B);
|
| - checkLub(B, J, B);
|
| -
|
| - checkLub(C, Object_, Object_);
|
| - checkLub(C, A, Object_);
|
| - checkLub(C, B, B);
|
| - checkLub(C, C, C);
|
| - checkLub(C, I, C);
|
| - checkLub(C, J, C);
|
| -
|
| - checkLub(I, Object_, Object_);
|
| - checkLub(I, A, A);
|
| - checkLub(I, B, B);
|
| - checkLub(I, C, C);
|
| - checkLub(I, I, I);
|
| - checkLub(I, J, C);
|
| -
|
| - checkLub(J, Object_, Object_);
|
| - checkLub(J, A, A);
|
| - checkLub(J, B, B);
|
| - checkLub(J, C, C);
|
| - checkLub(J, I, C);
|
| - checkLub(J, J, J);
|
| - }));
|
| + DartType Object_ = env['Object'];
|
| + DartType A = env['A'];
|
| + DartType B = env['B'];
|
| + DartType C = env['C'];
|
| + DartType I = env['I'];
|
| + DartType J = env['J'];
|
| +
|
| + checkLub(DartType a, DartType b, DartType expectedLub) {
|
| + DartType lub = env.computeLeastUpperBound(a, b);
|
| + Expect.equals(expectedLub, lub,
|
| + 'Unexpected lub($a,$b) = $lub, expected $expectedLub');
|
| + }
|
| +
|
| + checkLub(Object_, Object_, Object_);
|
| + checkLub(Object_, A, Object_);
|
| + checkLub(Object_, B, Object_);
|
| + checkLub(Object_, C, Object_);
|
| + checkLub(Object_, I, Object_);
|
| + checkLub(Object_, J, Object_);
|
| +
|
| + checkLub(A, Object_, Object_);
|
| + checkLub(A, A, A);
|
| + checkLub(A, B, Object_);
|
| + checkLub(A, C, Object_);
|
| + checkLub(A, I, A);
|
| + checkLub(A, J, A);
|
| +
|
| + checkLub(B, Object_, Object_);
|
| + checkLub(B, A, Object_);
|
| + checkLub(B, B, B);
|
| + checkLub(B, C, B);
|
| + checkLub(B, I, B);
|
| + checkLub(B, J, B);
|
| +
|
| + checkLub(C, Object_, Object_);
|
| + checkLub(C, A, Object_);
|
| + checkLub(C, B, B);
|
| + checkLub(C, C, C);
|
| + checkLub(C, I, C);
|
| + checkLub(C, J, C);
|
| +
|
| + checkLub(I, Object_, Object_);
|
| + checkLub(I, A, A);
|
| + checkLub(I, B, B);
|
| + checkLub(I, C, C);
|
| + checkLub(I, I, I);
|
| + checkLub(I, J, C);
|
| +
|
| + checkLub(J, Object_, Object_);
|
| + checkLub(J, A, A);
|
| + checkLub(J, B, B);
|
| + checkLub(J, C, C);
|
| + checkLub(J, I, C);
|
| + checkLub(J, J, J);
|
| + }));
|
| }
|
|
|
| void testGeneric() {
|
| @@ -146,78 +143,77 @@ void testGeneric() {
|
| class C extends B {}
|
| class I<T> {}
|
| """).then((env) {
|
| -
|
| - DartType Object_ = env['Object'];
|
| - DartType A = env['A'];
|
| - DartType B = env['B'];
|
| - DartType C = env['C'];
|
| - ClassElement I = env.getElement('I');
|
| - DartType I_A = instantiate(I, [A]);
|
| - DartType I_B = instantiate(I, [B]);
|
| - DartType I_C = instantiate(I, [C]);
|
| -
|
| - checkLub(DartType a, DartType b, DartType expectedLub) {
|
| - DartType lub = env.computeLeastUpperBound(a, b);
|
| - Expect.equals(expectedLub, lub,
|
| - 'Unexpected lub($a,$b) = $lub, expected $expectedLub');
|
| - }
|
| -
|
| - checkLub(Object_, Object_, Object_);
|
| - checkLub(Object_, A, Object_);
|
| - checkLub(Object_, B, Object_);
|
| - checkLub(Object_, C, Object_);
|
| - checkLub(Object_, I_A, Object_);
|
| - checkLub(Object_, I_B, Object_);
|
| - checkLub(Object_, I_C, Object_);
|
| -
|
| - checkLub(A, Object_, Object_);
|
| - checkLub(A, A, A);
|
| - checkLub(A, B, Object_);
|
| - checkLub(A, C, Object_);
|
| - checkLub(A, I_A, Object_);
|
| - checkLub(A, I_B, Object_);
|
| - checkLub(A, I_C, Object_);
|
| -
|
| - checkLub(B, Object_, Object_);
|
| - checkLub(B, A, Object_);
|
| - checkLub(B, B, B);
|
| - checkLub(B, C, B);
|
| - checkLub(B, I_A, Object_);
|
| - checkLub(B, I_B, Object_);
|
| - checkLub(B, I_C, Object_);
|
| -
|
| - checkLub(C, Object_, Object_);
|
| - checkLub(C, A, Object_);
|
| - checkLub(C, B, B);
|
| - checkLub(C, C, C);
|
| - checkLub(C, I_A, Object_);
|
| - checkLub(C, I_B, Object_);
|
| - checkLub(C, I_C, Object_);
|
| -
|
| - checkLub(I_A, Object_, Object_);
|
| - checkLub(I_A, A, Object_);
|
| - checkLub(I_A, B, Object_);
|
| - checkLub(I_A, C, Object_);
|
| - checkLub(I_A, I_A, I_A);
|
| - checkLub(I_A, I_B, Object_);
|
| - checkLub(I_A, I_C, Object_);
|
| -
|
| - checkLub(I_B, Object_, Object_);
|
| - checkLub(I_B, A, Object_);
|
| - checkLub(I_B, B, Object_);
|
| - checkLub(I_B, C, Object_);
|
| - checkLub(I_B, I_A, Object_);
|
| - checkLub(I_B, I_B, I_B);
|
| - checkLub(I_B, I_C, Object_);
|
| -
|
| - checkLub(I_C, Object_, Object_);
|
| - checkLub(I_C, A, Object_);
|
| - checkLub(I_C, B, Object_);
|
| - checkLub(I_C, C, Object_);
|
| - checkLub(I_C, I_A, Object_);
|
| - checkLub(I_C, I_B, Object_);
|
| - checkLub(I_C, I_C, I_C);
|
| - }));
|
| + DartType Object_ = env['Object'];
|
| + DartType A = env['A'];
|
| + DartType B = env['B'];
|
| + DartType C = env['C'];
|
| + ClassElement I = env.getElement('I');
|
| + DartType I_A = instantiate(I, [A]);
|
| + DartType I_B = instantiate(I, [B]);
|
| + DartType I_C = instantiate(I, [C]);
|
| +
|
| + checkLub(DartType a, DartType b, DartType expectedLub) {
|
| + DartType lub = env.computeLeastUpperBound(a, b);
|
| + Expect.equals(expectedLub, lub,
|
| + 'Unexpected lub($a,$b) = $lub, expected $expectedLub');
|
| + }
|
| +
|
| + checkLub(Object_, Object_, Object_);
|
| + checkLub(Object_, A, Object_);
|
| + checkLub(Object_, B, Object_);
|
| + checkLub(Object_, C, Object_);
|
| + checkLub(Object_, I_A, Object_);
|
| + checkLub(Object_, I_B, Object_);
|
| + checkLub(Object_, I_C, Object_);
|
| +
|
| + checkLub(A, Object_, Object_);
|
| + checkLub(A, A, A);
|
| + checkLub(A, B, Object_);
|
| + checkLub(A, C, Object_);
|
| + checkLub(A, I_A, Object_);
|
| + checkLub(A, I_B, Object_);
|
| + checkLub(A, I_C, Object_);
|
| +
|
| + checkLub(B, Object_, Object_);
|
| + checkLub(B, A, Object_);
|
| + checkLub(B, B, B);
|
| + checkLub(B, C, B);
|
| + checkLub(B, I_A, Object_);
|
| + checkLub(B, I_B, Object_);
|
| + checkLub(B, I_C, Object_);
|
| +
|
| + checkLub(C, Object_, Object_);
|
| + checkLub(C, A, Object_);
|
| + checkLub(C, B, B);
|
| + checkLub(C, C, C);
|
| + checkLub(C, I_A, Object_);
|
| + checkLub(C, I_B, Object_);
|
| + checkLub(C, I_C, Object_);
|
| +
|
| + checkLub(I_A, Object_, Object_);
|
| + checkLub(I_A, A, Object_);
|
| + checkLub(I_A, B, Object_);
|
| + checkLub(I_A, C, Object_);
|
| + checkLub(I_A, I_A, I_A);
|
| + checkLub(I_A, I_B, Object_);
|
| + checkLub(I_A, I_C, Object_);
|
| +
|
| + checkLub(I_B, Object_, Object_);
|
| + checkLub(I_B, A, Object_);
|
| + checkLub(I_B, B, Object_);
|
| + checkLub(I_B, C, Object_);
|
| + checkLub(I_B, I_A, Object_);
|
| + checkLub(I_B, I_B, I_B);
|
| + checkLub(I_B, I_C, Object_);
|
| +
|
| + checkLub(I_C, Object_, Object_);
|
| + checkLub(I_C, A, Object_);
|
| + checkLub(I_C, B, Object_);
|
| + checkLub(I_C, C, Object_);
|
| + checkLub(I_C, I_A, Object_);
|
| + checkLub(I_C, I_B, Object_);
|
| + checkLub(I_C, I_C, I_C);
|
| + }));
|
| }
|
|
|
| void testMixin() {
|
| @@ -230,94 +226,93 @@ void testMixin() {
|
| class I2 extends Object with A, B implements A, D {}
|
| class J extends Object with B, A implements A, D {}
|
| """).then((env) {
|
| -
|
| - DartType Object_ = env['Object'];
|
| - DartType A = env['A'];
|
| - DartType B = env['B'];
|
| - DartType C = env['C'];
|
| - DartType D = env['D'];
|
| - DartType I = env['I'];
|
| - DartType I2 = env['I2'];
|
| - DartType J = env['J'];
|
| -
|
| - checkLub(DartType a, DartType b, DartType expectedLub) {
|
| - DartType lub = env.computeLeastUpperBound(a, b);
|
| - Expect.equals(expectedLub, lub,
|
| - 'Unexpected lub($a,$b) = $lub, expected $expectedLub');
|
| - }
|
| -
|
| - checkLub(Object_, Object_, Object_);
|
| - checkLub(Object_, A, Object_);
|
| - checkLub(Object_, B, Object_);
|
| - checkLub(Object_, C, Object_);
|
| - checkLub(Object_, D, Object_);
|
| - checkLub(Object_, I, Object_);
|
| - checkLub(Object_, I2, Object_);
|
| - checkLub(Object_, J, Object_);
|
| -
|
| - checkLub(A, Object_, Object_);
|
| - checkLub(A, A, A);
|
| - checkLub(A, B, Object_);
|
| - checkLub(A, C, Object_);
|
| - checkLub(A, D, Object_);
|
| - checkLub(A, I, A);
|
| - checkLub(A, I2, A);
|
| - checkLub(A, J, A);
|
| -
|
| - checkLub(B, Object_, Object_);
|
| - checkLub(B, A, Object_);
|
| - checkLub(B, B, B);
|
| - checkLub(B, C, B);
|
| - checkLub(B, D, B);
|
| - checkLub(B, I, B);
|
| - checkLub(B, I2, B);
|
| - checkLub(B, J, B);
|
| -
|
| - checkLub(C, Object_, Object_);
|
| - checkLub(C, A, Object_);
|
| - checkLub(C, B, B);
|
| - checkLub(C, C, C);
|
| - checkLub(C, D, C);
|
| - checkLub(C, I, C);
|
| - checkLub(C, I2, C);
|
| - checkLub(C, J, C);
|
| -
|
| - checkLub(D, Object_, Object_);
|
| - checkLub(D, A, Object_);
|
| - checkLub(D, B, B);
|
| - checkLub(D, C, C);
|
| - checkLub(D, D, D);
|
| - checkLub(D, I, D);
|
| - checkLub(D, I2, D);
|
| - checkLub(D, J, D);
|
| -
|
| - checkLub(I, Object_, Object_);
|
| - checkLub(I, A, A);
|
| - checkLub(I, B, B);
|
| - checkLub(I, C, C);
|
| - checkLub(I, D, D);
|
| - checkLub(I, I, I);
|
| - checkLub(I, I2, D);
|
| - checkLub(I, J, D);
|
| -
|
| - checkLub(I2, Object_, Object_);
|
| - checkLub(I2, A, A);
|
| - checkLub(I2, B, B);
|
| - checkLub(I2, C, C);
|
| - checkLub(I2, D, D);
|
| - checkLub(I2, I, D);
|
| - checkLub(I2, I2, I2);
|
| - checkLub(I2, J, D);
|
| -
|
| - checkLub(J, Object_, Object_);
|
| - checkLub(J, A, A);
|
| - checkLub(J, B, B);
|
| - checkLub(J, C, C);
|
| - checkLub(J, D, D);
|
| - checkLub(J, I, D);
|
| - checkLub(J, I2, D);
|
| - checkLub(J, J, J);
|
| - }));
|
| + DartType Object_ = env['Object'];
|
| + DartType A = env['A'];
|
| + DartType B = env['B'];
|
| + DartType C = env['C'];
|
| + DartType D = env['D'];
|
| + DartType I = env['I'];
|
| + DartType I2 = env['I2'];
|
| + DartType J = env['J'];
|
| +
|
| + checkLub(DartType a, DartType b, DartType expectedLub) {
|
| + DartType lub = env.computeLeastUpperBound(a, b);
|
| + Expect.equals(expectedLub, lub,
|
| + 'Unexpected lub($a,$b) = $lub, expected $expectedLub');
|
| + }
|
| +
|
| + checkLub(Object_, Object_, Object_);
|
| + checkLub(Object_, A, Object_);
|
| + checkLub(Object_, B, Object_);
|
| + checkLub(Object_, C, Object_);
|
| + checkLub(Object_, D, Object_);
|
| + checkLub(Object_, I, Object_);
|
| + checkLub(Object_, I2, Object_);
|
| + checkLub(Object_, J, Object_);
|
| +
|
| + checkLub(A, Object_, Object_);
|
| + checkLub(A, A, A);
|
| + checkLub(A, B, Object_);
|
| + checkLub(A, C, Object_);
|
| + checkLub(A, D, Object_);
|
| + checkLub(A, I, A);
|
| + checkLub(A, I2, A);
|
| + checkLub(A, J, A);
|
| +
|
| + checkLub(B, Object_, Object_);
|
| + checkLub(B, A, Object_);
|
| + checkLub(B, B, B);
|
| + checkLub(B, C, B);
|
| + checkLub(B, D, B);
|
| + checkLub(B, I, B);
|
| + checkLub(B, I2, B);
|
| + checkLub(B, J, B);
|
| +
|
| + checkLub(C, Object_, Object_);
|
| + checkLub(C, A, Object_);
|
| + checkLub(C, B, B);
|
| + checkLub(C, C, C);
|
| + checkLub(C, D, C);
|
| + checkLub(C, I, C);
|
| + checkLub(C, I2, C);
|
| + checkLub(C, J, C);
|
| +
|
| + checkLub(D, Object_, Object_);
|
| + checkLub(D, A, Object_);
|
| + checkLub(D, B, B);
|
| + checkLub(D, C, C);
|
| + checkLub(D, D, D);
|
| + checkLub(D, I, D);
|
| + checkLub(D, I2, D);
|
| + checkLub(D, J, D);
|
| +
|
| + checkLub(I, Object_, Object_);
|
| + checkLub(I, A, A);
|
| + checkLub(I, B, B);
|
| + checkLub(I, C, C);
|
| + checkLub(I, D, D);
|
| + checkLub(I, I, I);
|
| + checkLub(I, I2, D);
|
| + checkLub(I, J, D);
|
| +
|
| + checkLub(I2, Object_, Object_);
|
| + checkLub(I2, A, A);
|
| + checkLub(I2, B, B);
|
| + checkLub(I2, C, C);
|
| + checkLub(I2, D, D);
|
| + checkLub(I2, I, D);
|
| + checkLub(I2, I2, I2);
|
| + checkLub(I2, J, D);
|
| +
|
| + checkLub(J, Object_, Object_);
|
| + checkLub(J, A, A);
|
| + checkLub(J, B, B);
|
| + checkLub(J, C, C);
|
| + checkLub(J, D, D);
|
| + checkLub(J, I, D);
|
| + checkLub(J, I2, D);
|
| + checkLub(J, J, J);
|
| + }));
|
| }
|
|
|
| void testFunction() {
|
| @@ -345,357 +340,355 @@ void testFunction() {
|
| typedef void void____B_C({B a, C b});
|
| typedef void void____C_C({C a, C b});
|
| """).then((env) {
|
| -
|
| - DartType Object_ = env['Object'];
|
| - DartType Function_ = env['Function'];
|
| - DartType dynamic__ = env['dynamic__'];
|
| - DartType void__ = env['void__'];
|
| - DartType A__ = env['A__'];
|
| - DartType B__ = env['B__'];
|
| - DartType C__ = env['C__'];
|
| - DartType void__A_B = env['void__A_B'];
|
| - DartType void__A_C = env['void__A_C'];
|
| - DartType void__B_A = env['void__B_A'];
|
| - DartType void__B_C = env['void__B_C'];
|
| - DartType void___B = env['void___B'];
|
| - DartType void___B_C = env['void___B_C'];
|
| - DartType void___C_C = env['void___C_C'];
|
| - DartType void____B = env['void____B'];
|
| - DartType void____B_C = env['void____B_C'];
|
| - DartType void____C_C = env['void____C_C'];
|
| -
|
| - // Types used only for checking results.
|
| - DartType void_ = env['void'];
|
| - DartType B = env['B'];
|
| - DartType C = env['C'];
|
| - FunctionType Object__ = env.functionType(Object_, []);
|
| - FunctionType void__Object_Object =
|
| - env.functionType(void_, [Object_, Object_]);
|
| - FunctionType void__Object_B =
|
| - env.functionType(void_, [Object_, B]);
|
| - FunctionType void__Object_C =
|
| - env.functionType(void_, [Object_, C]);
|
| - FunctionType void__B_Object =
|
| - env.functionType(void_, [B, Object_]);
|
| -
|
| - checkLub(DartType a, DartType b, DartType expectedLub) {
|
| - DartType lub = env.computeLeastUpperBound(a, b);
|
| - if (a != b) {
|
| - expectedLub = expectedLub.unaliased;
|
| - lub = lub.unaliased;
|
| - }
|
| - Expect.equals(expectedLub, lub,
|
| - 'Unexpected lub(${a.unaliased},'
|
| - '${b.unaliased} = '
|
| - '${lub}, expected ${expectedLub}');
|
| - }
|
| -
|
| - checkLub(Object_, Object_, Object_);
|
| - checkLub(Object_, Function_, Object_);
|
| - checkLub(Object_, dynamic__, Object_);
|
| - checkLub(Object_, void__, Object_);
|
| - checkLub(Object_, A__, Object_);
|
| - checkLub(Object_, B__, Object_);
|
| - checkLub(Object_, C__, Object_);
|
| - checkLub(Object_, void__A_B, Object_);
|
| - checkLub(Object_, void__A_C, Object_);
|
| - checkLub(Object_, void__B_A, Object_);
|
| - checkLub(Object_, void__B_C, Object_);
|
| - checkLub(Object_, void___B, Object_);
|
| - checkLub(Object_, void___B_C, Object_);
|
| - checkLub(Object_, void___C_C, Object_);
|
| - checkLub(Object_, void____B, Object_);
|
| - checkLub(Object_, void____B_C, Object_);
|
| - checkLub(Object_, void____C_C, Object_);
|
| -
|
| - checkLub(Function_, Object_, Object_);
|
| - checkLub(Function_, Function_, Function_);
|
| - checkLub(Function_, dynamic__, Function_);
|
| - checkLub(Function_, void__, Function_);
|
| - checkLub(Function_, A__, Function_);
|
| - checkLub(Function_, B__, Function_);
|
| - checkLub(Function_, C__, Function_);
|
| - checkLub(Function_, void__A_B, Function_);
|
| - checkLub(Function_, void__A_C, Function_);
|
| - checkLub(Function_, void__B_A, Function_);
|
| - checkLub(Function_, void__B_C, Function_);
|
| - checkLub(Function_, void___B, Function_);
|
| - checkLub(Function_, void___B_C, Function_);
|
| - checkLub(Function_, void___C_C, Function_);
|
| - checkLub(Function_, void____B, Function_);
|
| - checkLub(Function_, void____B_C, Function_);
|
| - checkLub(Function_, void____C_C, Function_);
|
| -
|
| - checkLub(dynamic__, Object_, Object_);
|
| - checkLub(dynamic__, Function_, Function_);
|
| - checkLub(dynamic__, dynamic__, dynamic__);
|
| - checkLub(dynamic__, void__, dynamic__);
|
| - checkLub(dynamic__, A__, dynamic__);
|
| - checkLub(dynamic__, B__, dynamic__);
|
| - checkLub(dynamic__, C__, dynamic__);
|
| - checkLub(dynamic__, void__A_B, Function_);
|
| - checkLub(dynamic__, void__A_C, Function_);
|
| - checkLub(dynamic__, void__B_A, Function_);
|
| - checkLub(dynamic__, void__B_C, Function_);
|
| - checkLub(dynamic__, void___B, dynamic__);
|
| - checkLub(dynamic__, void___B_C, dynamic__);
|
| - checkLub(dynamic__, void___C_C, dynamic__);
|
| - checkLub(dynamic__, void____B, dynamic__);
|
| - checkLub(dynamic__, void____B_C, dynamic__);
|
| - checkLub(dynamic__, void____C_C, dynamic__);
|
| -
|
| - checkLub(void__, Object_, Object_);
|
| - checkLub(void__, Function_, Function_);
|
| - checkLub(void__, dynamic__, dynamic__);
|
| - checkLub(void__, void__, void__);
|
| - checkLub(void__, A__, void__);
|
| - checkLub(void__, B__, void__);
|
| - checkLub(void__, C__, void__);
|
| - checkLub(void__, void__A_B, Function_);
|
| - checkLub(void__, void__A_C, Function_);
|
| - checkLub(void__, void__B_A, Function_);
|
| - checkLub(void__, void__B_C, Function_);
|
| - checkLub(void__, void___B, void__);
|
| - checkLub(void__, void___B_C, void__);
|
| - checkLub(void__, void___C_C, void__);
|
| - checkLub(void__, void____B, void__);
|
| - checkLub(void__, void____B_C, void__);
|
| - checkLub(void__, void____C_C, void__);
|
| -
|
| - checkLub(A__, Object_, Object_);
|
| - checkLub(A__, Function_, Function_);
|
| - checkLub(A__, dynamic__, dynamic__);
|
| - checkLub(A__, void__, void__);
|
| - checkLub(A__, A__, A__);
|
| - checkLub(A__, B__, Object__);
|
| - checkLub(A__, C__, Object__);
|
| - checkLub(A__, void__A_B, Function_);
|
| - checkLub(A__, void__A_C, Function_);
|
| - checkLub(A__, void__B_A, Function_);
|
| - checkLub(A__, void__B_C, Function_);
|
| - checkLub(A__, void___B, void__);
|
| - checkLub(A__, void___B_C, void__);
|
| - checkLub(A__, void___C_C, void__);
|
| - checkLub(A__, void____B, void__);
|
| - checkLub(A__, void____B_C, void__);
|
| - checkLub(A__, void____C_C, void__);
|
| -
|
| - checkLub(B__, Object_, Object_);
|
| - checkLub(B__, Function_, Function_);
|
| - checkLub(B__, dynamic__, dynamic__);
|
| - checkLub(B__, void__, void__);
|
| - checkLub(B__, A__, Object__);
|
| - checkLub(B__, B__, B__);
|
| - checkLub(B__, C__, B__);
|
| - checkLub(B__, void__A_B, Function_);
|
| - checkLub(B__, void__A_C, Function_);
|
| - checkLub(B__, void__B_A, Function_);
|
| - checkLub(B__, void__B_C, Function_);
|
| - checkLub(B__, void___B, void__);
|
| - checkLub(B__, void___B_C, void__);
|
| - checkLub(B__, void___C_C, void__);
|
| - checkLub(B__, void____B, void__);
|
| - checkLub(B__, void____B_C, void__);
|
| - checkLub(B__, void____C_C, void__);
|
| -
|
| - checkLub(C__, Object_, Object_);
|
| - checkLub(C__, Function_, Function_);
|
| - checkLub(C__, dynamic__, dynamic__);
|
| - checkLub(C__, void__, void__);
|
| - checkLub(C__, A__, Object__);
|
| - checkLub(C__, B__, B__);
|
| - checkLub(C__, C__, C__);
|
| - checkLub(C__, void__A_B, Function_);
|
| - checkLub(C__, void__A_C, Function_);
|
| - checkLub(C__, void__B_A, Function_);
|
| - checkLub(C__, void__B_C, Function_);
|
| - checkLub(C__, void___B, void__);
|
| - checkLub(C__, void___B_C, void__);
|
| - checkLub(C__, void___C_C, void__);
|
| - checkLub(C__, void____B, void__);
|
| - checkLub(C__, void____B_C, void__);
|
| - checkLub(C__, void____C_C, void__);
|
| -
|
| - checkLub(void__A_B, Object_, Object_);
|
| - checkLub(void__A_B, Function_, Function_);
|
| - checkLub(void__A_B, dynamic__, Function_);
|
| - checkLub(void__A_B, void__, Function_);
|
| - checkLub(void__A_B, A__, Function_);
|
| - checkLub(void__A_B, B__, Function_);
|
| - checkLub(void__A_B, C__, Function_);
|
| - checkLub(void__A_B, void__A_B, void__A_B);
|
| - checkLub(void__A_B, void__A_C, void__A_B);
|
| - checkLub(void__A_B, void__B_A, void__Object_Object);
|
| - checkLub(void__A_B, void__B_C, void__Object_B);
|
| - checkLub(void__A_B, void___B, Function_);
|
| - checkLub(void__A_B, void___B_C, Function_);
|
| - checkLub(void__A_B, void___C_C, Function_);
|
| - checkLub(void__A_B, void____B, Function_);
|
| - checkLub(void__A_B, void____B_C, Function_);
|
| - checkLub(void__A_B, void____C_C, Function_);
|
| -
|
| - checkLub(void__A_C, Object_, Object_);
|
| - checkLub(void__A_C, Function_, Function_);
|
| - checkLub(void__A_C, dynamic__, Function_);
|
| - checkLub(void__A_C, void__, Function_);
|
| - checkLub(void__A_C, A__, Function_);
|
| - checkLub(void__A_C, B__, Function_);
|
| - checkLub(void__A_C, C__, Function_);
|
| - checkLub(void__A_C, void__A_B, void__A_B);
|
| - checkLub(void__A_C, void__A_C, void__A_C);
|
| - checkLub(void__A_C, void__B_A, void__Object_Object);
|
| - checkLub(void__A_C, void__B_C, void__Object_C);
|
| - checkLub(void__A_C, void___B, Function_);
|
| - checkLub(void__A_C, void___B_C, Function_);
|
| - checkLub(void__A_C, void___C_C, Function_);
|
| - checkLub(void__A_C, void____B, Function_);
|
| - checkLub(void__A_C, void____B_C, Function_);
|
| - checkLub(void__A_C, void____C_C, Function_);
|
| -
|
| - checkLub(void__B_A, Object_, Object_);
|
| - checkLub(void__B_A, Function_, Function_);
|
| - checkLub(void__B_A, dynamic__, Function_);
|
| - checkLub(void__B_A, void__, Function_);
|
| - checkLub(void__B_A, A__, Function_);
|
| - checkLub(void__B_A, B__, Function_);
|
| - checkLub(void__B_A, C__, Function_);
|
| - checkLub(void__B_A, void__A_B, void__Object_Object);
|
| - checkLub(void__B_A, void__A_C, void__Object_Object);
|
| - checkLub(void__B_A, void__B_A, void__B_A);
|
| - checkLub(void__B_A, void__B_C, void__B_Object);
|
| - checkLub(void__B_A, void___B, Function_);
|
| - checkLub(void__B_A, void___B_C, Function_);
|
| - checkLub(void__B_A, void___C_C, Function_);
|
| - checkLub(void__B_A, void____B, Function_);
|
| - checkLub(void__B_A, void____B_C, Function_);
|
| - checkLub(void__B_A, void____C_C, Function_);
|
| -
|
| - checkLub(void__B_C, Object_, Object_);
|
| - checkLub(void__B_C, Function_, Function_);
|
| - checkLub(void__B_C, dynamic__, Function_);
|
| - checkLub(void__B_C, void__, Function_);
|
| - checkLub(void__B_C, A__, Function_);
|
| - checkLub(void__B_C, B__, Function_);
|
| - checkLub(void__B_C, C__, Function_);
|
| - checkLub(void__B_C, void__A_B, void__Object_B);
|
| - checkLub(void__B_C, void__A_C, void__Object_C);
|
| - checkLub(void__B_C, void__B_A, void__B_Object);
|
| - checkLub(void__B_C, void__B_C, void__B_C);
|
| - checkLub(void__B_C, void___B, Function_);
|
| - checkLub(void__B_C, void___B_C, Function_);
|
| - checkLub(void__B_C, void___C_C, Function_);
|
| - checkLub(void__B_C, void____B, Function_);
|
| - checkLub(void__B_C, void____B_C, Function_);
|
| - checkLub(void__B_C, void____C_C, Function_);
|
| -
|
| - checkLub(void___B, Object_, Object_);
|
| - checkLub(void___B, Function_, Function_);
|
| - checkLub(void___B, dynamic__, dynamic__);
|
| - checkLub(void___B, void__, void__);
|
| - checkLub(void___B, A__, void__);
|
| - checkLub(void___B, B__, void__);
|
| - checkLub(void___B, C__, void__);
|
| - checkLub(void___B, void__A_B, Function_);
|
| - checkLub(void___B, void__A_C, Function_);
|
| - checkLub(void___B, void__B_A, Function_);
|
| - checkLub(void___B, void__B_C, Function_);
|
| - checkLub(void___B, void___B, void___B);
|
| - checkLub(void___B, void___B_C, void___B);
|
| - checkLub(void___B, void___C_C, void___B);
|
| - checkLub(void___B, void____B, void__);
|
| - checkLub(void___B, void____B_C, void__);
|
| - checkLub(void___B, void____C_C, void__);
|
| -
|
| - checkLub(void___B_C, Object_, Object_);
|
| - checkLub(void___B_C, Function_, Function_);
|
| - checkLub(void___B_C, dynamic__, dynamic__);
|
| - checkLub(void___B_C, void__, void__);
|
| - checkLub(void___B_C, A__, void__);
|
| - checkLub(void___B_C, B__, void__);
|
| - checkLub(void___B_C, C__, void__);
|
| - checkLub(void___B_C, void__A_B, Function_);
|
| - checkLub(void___B_C, void__A_C, Function_);
|
| - checkLub(void___B_C, void__B_A, Function_);
|
| - checkLub(void___B_C, void__B_C, Function_);
|
| - checkLub(void___B_C, void___B, void___B);
|
| - checkLub(void___B_C, void___B_C, void___B_C);
|
| - checkLub(void___B_C, void___C_C, void___B_C);
|
| - checkLub(void___B_C, void____B, void__);
|
| - checkLub(void___B_C, void____B_C, void__);
|
| - checkLub(void___B_C, void____C_C, void__);
|
| -
|
| - checkLub(void___C_C, Object_, Object_);
|
| - checkLub(void___C_C, Function_, Function_);
|
| - checkLub(void___C_C, dynamic__, dynamic__);
|
| - checkLub(void___C_C, void__, void__);
|
| - checkLub(void___C_C, A__, void__);
|
| - checkLub(void___C_C, B__, void__);
|
| - checkLub(void___C_C, C__, void__);
|
| - checkLub(void___C_C, void__A_B, Function_);
|
| - checkLub(void___C_C, void__A_C, Function_);
|
| - checkLub(void___C_C, void__B_A, Function_);
|
| - checkLub(void___C_C, void__B_C, Function_);
|
| - checkLub(void___C_C, void___B, void___B);
|
| - checkLub(void___C_C, void___B_C, void___B_C);
|
| - checkLub(void___C_C, void___C_C, void___C_C);
|
| - checkLub(void___C_C, void____B, void__);
|
| - checkLub(void___C_C, void____B_C, void__);
|
| - checkLub(void___C_C, void____C_C, void__);
|
| -
|
| - checkLub(void____B, Object_, Object_);
|
| - checkLub(void____B, Function_, Function_);
|
| - checkLub(void____B, dynamic__, dynamic__);
|
| - checkLub(void____B, void__, void__);
|
| - checkLub(void____B, A__, void__);
|
| - checkLub(void____B, B__, void__);
|
| - checkLub(void____B, C__, void__);
|
| - checkLub(void____B, void__A_B, Function_);
|
| - checkLub(void____B, void__A_C, Function_);
|
| - checkLub(void____B, void__B_A, Function_);
|
| - checkLub(void____B, void__B_C, Function_);
|
| - checkLub(void____B, void___B, void__);
|
| - checkLub(void____B, void___B_C, void__);
|
| - checkLub(void____B, void___C_C, void__);
|
| - checkLub(void____B, void____B, void____B);
|
| - checkLub(void____B, void____B_C, void____B);
|
| - checkLub(void____B, void____C_C, void____B);
|
| -
|
| - checkLub(void____B_C, Object_, Object_);
|
| - checkLub(void____B_C, Function_, Function_);
|
| - checkLub(void____B_C, dynamic__, dynamic__);
|
| - checkLub(void____B_C, void__, void__);
|
| - checkLub(void____B_C, A__, void__);
|
| - checkLub(void____B_C, B__, void__);
|
| - checkLub(void____B_C, C__, void__);
|
| - checkLub(void____B_C, void__A_B, Function_);
|
| - checkLub(void____B_C, void__A_C, Function_);
|
| - checkLub(void____B_C, void__B_A, Function_);
|
| - checkLub(void____B_C, void__B_C, Function_);
|
| - checkLub(void____B_C, void___B, void__);
|
| - checkLub(void____B_C, void___B_C, void__);
|
| - checkLub(void____B_C, void___C_C, void__);
|
| - checkLub(void____B_C, void____B, void____B);
|
| - checkLub(void____B_C, void____B_C, void____B_C);
|
| - checkLub(void____B_C, void____C_C, void____B_C);
|
| -
|
| - checkLub(void____C_C, Object_, Object_);
|
| - checkLub(void____C_C, Function_, Function_);
|
| - checkLub(void____C_C, dynamic__, dynamic__);
|
| - checkLub(void____C_C, void__, void__);
|
| - checkLub(void____C_C, A__, void__);
|
| - checkLub(void____C_C, B__, void__);
|
| - checkLub(void____C_C, C__, void__);
|
| - checkLub(void____C_C, void__A_B, Function_);
|
| - checkLub(void____C_C, void__A_C, Function_);
|
| - checkLub(void____C_C, void__B_A, Function_);
|
| - checkLub(void____C_C, void__B_C, Function_);
|
| - checkLub(void____C_C, void___B, void__);
|
| - checkLub(void____C_C, void___B_C, void__);
|
| - checkLub(void____C_C, void___C_C, void__);
|
| - checkLub(void____C_C, void____B, void____B);
|
| - checkLub(void____C_C, void____B_C, void____B_C);
|
| - checkLub(void____C_C, void____C_C, void____C_C);
|
| - }));
|
| + DartType Object_ = env['Object'];
|
| + DartType Function_ = env['Function'];
|
| + DartType dynamic__ = env['dynamic__'];
|
| + DartType void__ = env['void__'];
|
| + DartType A__ = env['A__'];
|
| + DartType B__ = env['B__'];
|
| + DartType C__ = env['C__'];
|
| + DartType void__A_B = env['void__A_B'];
|
| + DartType void__A_C = env['void__A_C'];
|
| + DartType void__B_A = env['void__B_A'];
|
| + DartType void__B_C = env['void__B_C'];
|
| + DartType void___B = env['void___B'];
|
| + DartType void___B_C = env['void___B_C'];
|
| + DartType void___C_C = env['void___C_C'];
|
| + DartType void____B = env['void____B'];
|
| + DartType void____B_C = env['void____B_C'];
|
| + DartType void____C_C = env['void____C_C'];
|
| +
|
| + // Types used only for checking results.
|
| + DartType void_ = env['void'];
|
| + DartType B = env['B'];
|
| + DartType C = env['C'];
|
| + FunctionType Object__ = env.functionType(Object_, []);
|
| + FunctionType void__Object_Object =
|
| + env.functionType(void_, [Object_, Object_]);
|
| + FunctionType void__Object_B = env.functionType(void_, [Object_, B]);
|
| + FunctionType void__Object_C = env.functionType(void_, [Object_, C]);
|
| + FunctionType void__B_Object = env.functionType(void_, [B, Object_]);
|
| +
|
| + checkLub(DartType a, DartType b, DartType expectedLub) {
|
| + DartType lub = env.computeLeastUpperBound(a, b);
|
| + if (a != b) {
|
| + expectedLub = expectedLub.unaliased;
|
| + lub = lub.unaliased;
|
| + }
|
| + Expect.equals(
|
| + expectedLub,
|
| + lub,
|
| + 'Unexpected lub(${a.unaliased},'
|
| + '${b.unaliased} = '
|
| + '${lub}, expected ${expectedLub}');
|
| + }
|
| +
|
| + checkLub(Object_, Object_, Object_);
|
| + checkLub(Object_, Function_, Object_);
|
| + checkLub(Object_, dynamic__, Object_);
|
| + checkLub(Object_, void__, Object_);
|
| + checkLub(Object_, A__, Object_);
|
| + checkLub(Object_, B__, Object_);
|
| + checkLub(Object_, C__, Object_);
|
| + checkLub(Object_, void__A_B, Object_);
|
| + checkLub(Object_, void__A_C, Object_);
|
| + checkLub(Object_, void__B_A, Object_);
|
| + checkLub(Object_, void__B_C, Object_);
|
| + checkLub(Object_, void___B, Object_);
|
| + checkLub(Object_, void___B_C, Object_);
|
| + checkLub(Object_, void___C_C, Object_);
|
| + checkLub(Object_, void____B, Object_);
|
| + checkLub(Object_, void____B_C, Object_);
|
| + checkLub(Object_, void____C_C, Object_);
|
| +
|
| + checkLub(Function_, Object_, Object_);
|
| + checkLub(Function_, Function_, Function_);
|
| + checkLub(Function_, dynamic__, Function_);
|
| + checkLub(Function_, void__, Function_);
|
| + checkLub(Function_, A__, Function_);
|
| + checkLub(Function_, B__, Function_);
|
| + checkLub(Function_, C__, Function_);
|
| + checkLub(Function_, void__A_B, Function_);
|
| + checkLub(Function_, void__A_C, Function_);
|
| + checkLub(Function_, void__B_A, Function_);
|
| + checkLub(Function_, void__B_C, Function_);
|
| + checkLub(Function_, void___B, Function_);
|
| + checkLub(Function_, void___B_C, Function_);
|
| + checkLub(Function_, void___C_C, Function_);
|
| + checkLub(Function_, void____B, Function_);
|
| + checkLub(Function_, void____B_C, Function_);
|
| + checkLub(Function_, void____C_C, Function_);
|
| +
|
| + checkLub(dynamic__, Object_, Object_);
|
| + checkLub(dynamic__, Function_, Function_);
|
| + checkLub(dynamic__, dynamic__, dynamic__);
|
| + checkLub(dynamic__, void__, dynamic__);
|
| + checkLub(dynamic__, A__, dynamic__);
|
| + checkLub(dynamic__, B__, dynamic__);
|
| + checkLub(dynamic__, C__, dynamic__);
|
| + checkLub(dynamic__, void__A_B, Function_);
|
| + checkLub(dynamic__, void__A_C, Function_);
|
| + checkLub(dynamic__, void__B_A, Function_);
|
| + checkLub(dynamic__, void__B_C, Function_);
|
| + checkLub(dynamic__, void___B, dynamic__);
|
| + checkLub(dynamic__, void___B_C, dynamic__);
|
| + checkLub(dynamic__, void___C_C, dynamic__);
|
| + checkLub(dynamic__, void____B, dynamic__);
|
| + checkLub(dynamic__, void____B_C, dynamic__);
|
| + checkLub(dynamic__, void____C_C, dynamic__);
|
| +
|
| + checkLub(void__, Object_, Object_);
|
| + checkLub(void__, Function_, Function_);
|
| + checkLub(void__, dynamic__, dynamic__);
|
| + checkLub(void__, void__, void__);
|
| + checkLub(void__, A__, void__);
|
| + checkLub(void__, B__, void__);
|
| + checkLub(void__, C__, void__);
|
| + checkLub(void__, void__A_B, Function_);
|
| + checkLub(void__, void__A_C, Function_);
|
| + checkLub(void__, void__B_A, Function_);
|
| + checkLub(void__, void__B_C, Function_);
|
| + checkLub(void__, void___B, void__);
|
| + checkLub(void__, void___B_C, void__);
|
| + checkLub(void__, void___C_C, void__);
|
| + checkLub(void__, void____B, void__);
|
| + checkLub(void__, void____B_C, void__);
|
| + checkLub(void__, void____C_C, void__);
|
| +
|
| + checkLub(A__, Object_, Object_);
|
| + checkLub(A__, Function_, Function_);
|
| + checkLub(A__, dynamic__, dynamic__);
|
| + checkLub(A__, void__, void__);
|
| + checkLub(A__, A__, A__);
|
| + checkLub(A__, B__, Object__);
|
| + checkLub(A__, C__, Object__);
|
| + checkLub(A__, void__A_B, Function_);
|
| + checkLub(A__, void__A_C, Function_);
|
| + checkLub(A__, void__B_A, Function_);
|
| + checkLub(A__, void__B_C, Function_);
|
| + checkLub(A__, void___B, void__);
|
| + checkLub(A__, void___B_C, void__);
|
| + checkLub(A__, void___C_C, void__);
|
| + checkLub(A__, void____B, void__);
|
| + checkLub(A__, void____B_C, void__);
|
| + checkLub(A__, void____C_C, void__);
|
| +
|
| + checkLub(B__, Object_, Object_);
|
| + checkLub(B__, Function_, Function_);
|
| + checkLub(B__, dynamic__, dynamic__);
|
| + checkLub(B__, void__, void__);
|
| + checkLub(B__, A__, Object__);
|
| + checkLub(B__, B__, B__);
|
| + checkLub(B__, C__, B__);
|
| + checkLub(B__, void__A_B, Function_);
|
| + checkLub(B__, void__A_C, Function_);
|
| + checkLub(B__, void__B_A, Function_);
|
| + checkLub(B__, void__B_C, Function_);
|
| + checkLub(B__, void___B, void__);
|
| + checkLub(B__, void___B_C, void__);
|
| + checkLub(B__, void___C_C, void__);
|
| + checkLub(B__, void____B, void__);
|
| + checkLub(B__, void____B_C, void__);
|
| + checkLub(B__, void____C_C, void__);
|
| +
|
| + checkLub(C__, Object_, Object_);
|
| + checkLub(C__, Function_, Function_);
|
| + checkLub(C__, dynamic__, dynamic__);
|
| + checkLub(C__, void__, void__);
|
| + checkLub(C__, A__, Object__);
|
| + checkLub(C__, B__, B__);
|
| + checkLub(C__, C__, C__);
|
| + checkLub(C__, void__A_B, Function_);
|
| + checkLub(C__, void__A_C, Function_);
|
| + checkLub(C__, void__B_A, Function_);
|
| + checkLub(C__, void__B_C, Function_);
|
| + checkLub(C__, void___B, void__);
|
| + checkLub(C__, void___B_C, void__);
|
| + checkLub(C__, void___C_C, void__);
|
| + checkLub(C__, void____B, void__);
|
| + checkLub(C__, void____B_C, void__);
|
| + checkLub(C__, void____C_C, void__);
|
| +
|
| + checkLub(void__A_B, Object_, Object_);
|
| + checkLub(void__A_B, Function_, Function_);
|
| + checkLub(void__A_B, dynamic__, Function_);
|
| + checkLub(void__A_B, void__, Function_);
|
| + checkLub(void__A_B, A__, Function_);
|
| + checkLub(void__A_B, B__, Function_);
|
| + checkLub(void__A_B, C__, Function_);
|
| + checkLub(void__A_B, void__A_B, void__A_B);
|
| + checkLub(void__A_B, void__A_C, void__A_B);
|
| + checkLub(void__A_B, void__B_A, void__Object_Object);
|
| + checkLub(void__A_B, void__B_C, void__Object_B);
|
| + checkLub(void__A_B, void___B, Function_);
|
| + checkLub(void__A_B, void___B_C, Function_);
|
| + checkLub(void__A_B, void___C_C, Function_);
|
| + checkLub(void__A_B, void____B, Function_);
|
| + checkLub(void__A_B, void____B_C, Function_);
|
| + checkLub(void__A_B, void____C_C, Function_);
|
| +
|
| + checkLub(void__A_C, Object_, Object_);
|
| + checkLub(void__A_C, Function_, Function_);
|
| + checkLub(void__A_C, dynamic__, Function_);
|
| + checkLub(void__A_C, void__, Function_);
|
| + checkLub(void__A_C, A__, Function_);
|
| + checkLub(void__A_C, B__, Function_);
|
| + checkLub(void__A_C, C__, Function_);
|
| + checkLub(void__A_C, void__A_B, void__A_B);
|
| + checkLub(void__A_C, void__A_C, void__A_C);
|
| + checkLub(void__A_C, void__B_A, void__Object_Object);
|
| + checkLub(void__A_C, void__B_C, void__Object_C);
|
| + checkLub(void__A_C, void___B, Function_);
|
| + checkLub(void__A_C, void___B_C, Function_);
|
| + checkLub(void__A_C, void___C_C, Function_);
|
| + checkLub(void__A_C, void____B, Function_);
|
| + checkLub(void__A_C, void____B_C, Function_);
|
| + checkLub(void__A_C, void____C_C, Function_);
|
| +
|
| + checkLub(void__B_A, Object_, Object_);
|
| + checkLub(void__B_A, Function_, Function_);
|
| + checkLub(void__B_A, dynamic__, Function_);
|
| + checkLub(void__B_A, void__, Function_);
|
| + checkLub(void__B_A, A__, Function_);
|
| + checkLub(void__B_A, B__, Function_);
|
| + checkLub(void__B_A, C__, Function_);
|
| + checkLub(void__B_A, void__A_B, void__Object_Object);
|
| + checkLub(void__B_A, void__A_C, void__Object_Object);
|
| + checkLub(void__B_A, void__B_A, void__B_A);
|
| + checkLub(void__B_A, void__B_C, void__B_Object);
|
| + checkLub(void__B_A, void___B, Function_);
|
| + checkLub(void__B_A, void___B_C, Function_);
|
| + checkLub(void__B_A, void___C_C, Function_);
|
| + checkLub(void__B_A, void____B, Function_);
|
| + checkLub(void__B_A, void____B_C, Function_);
|
| + checkLub(void__B_A, void____C_C, Function_);
|
| +
|
| + checkLub(void__B_C, Object_, Object_);
|
| + checkLub(void__B_C, Function_, Function_);
|
| + checkLub(void__B_C, dynamic__, Function_);
|
| + checkLub(void__B_C, void__, Function_);
|
| + checkLub(void__B_C, A__, Function_);
|
| + checkLub(void__B_C, B__, Function_);
|
| + checkLub(void__B_C, C__, Function_);
|
| + checkLub(void__B_C, void__A_B, void__Object_B);
|
| + checkLub(void__B_C, void__A_C, void__Object_C);
|
| + checkLub(void__B_C, void__B_A, void__B_Object);
|
| + checkLub(void__B_C, void__B_C, void__B_C);
|
| + checkLub(void__B_C, void___B, Function_);
|
| + checkLub(void__B_C, void___B_C, Function_);
|
| + checkLub(void__B_C, void___C_C, Function_);
|
| + checkLub(void__B_C, void____B, Function_);
|
| + checkLub(void__B_C, void____B_C, Function_);
|
| + checkLub(void__B_C, void____C_C, Function_);
|
| +
|
| + checkLub(void___B, Object_, Object_);
|
| + checkLub(void___B, Function_, Function_);
|
| + checkLub(void___B, dynamic__, dynamic__);
|
| + checkLub(void___B, void__, void__);
|
| + checkLub(void___B, A__, void__);
|
| + checkLub(void___B, B__, void__);
|
| + checkLub(void___B, C__, void__);
|
| + checkLub(void___B, void__A_B, Function_);
|
| + checkLub(void___B, void__A_C, Function_);
|
| + checkLub(void___B, void__B_A, Function_);
|
| + checkLub(void___B, void__B_C, Function_);
|
| + checkLub(void___B, void___B, void___B);
|
| + checkLub(void___B, void___B_C, void___B);
|
| + checkLub(void___B, void___C_C, void___B);
|
| + checkLub(void___B, void____B, void__);
|
| + checkLub(void___B, void____B_C, void__);
|
| + checkLub(void___B, void____C_C, void__);
|
| +
|
| + checkLub(void___B_C, Object_, Object_);
|
| + checkLub(void___B_C, Function_, Function_);
|
| + checkLub(void___B_C, dynamic__, dynamic__);
|
| + checkLub(void___B_C, void__, void__);
|
| + checkLub(void___B_C, A__, void__);
|
| + checkLub(void___B_C, B__, void__);
|
| + checkLub(void___B_C, C__, void__);
|
| + checkLub(void___B_C, void__A_B, Function_);
|
| + checkLub(void___B_C, void__A_C, Function_);
|
| + checkLub(void___B_C, void__B_A, Function_);
|
| + checkLub(void___B_C, void__B_C, Function_);
|
| + checkLub(void___B_C, void___B, void___B);
|
| + checkLub(void___B_C, void___B_C, void___B_C);
|
| + checkLub(void___B_C, void___C_C, void___B_C);
|
| + checkLub(void___B_C, void____B, void__);
|
| + checkLub(void___B_C, void____B_C, void__);
|
| + checkLub(void___B_C, void____C_C, void__);
|
| +
|
| + checkLub(void___C_C, Object_, Object_);
|
| + checkLub(void___C_C, Function_, Function_);
|
| + checkLub(void___C_C, dynamic__, dynamic__);
|
| + checkLub(void___C_C, void__, void__);
|
| + checkLub(void___C_C, A__, void__);
|
| + checkLub(void___C_C, B__, void__);
|
| + checkLub(void___C_C, C__, void__);
|
| + checkLub(void___C_C, void__A_B, Function_);
|
| + checkLub(void___C_C, void__A_C, Function_);
|
| + checkLub(void___C_C, void__B_A, Function_);
|
| + checkLub(void___C_C, void__B_C, Function_);
|
| + checkLub(void___C_C, void___B, void___B);
|
| + checkLub(void___C_C, void___B_C, void___B_C);
|
| + checkLub(void___C_C, void___C_C, void___C_C);
|
| + checkLub(void___C_C, void____B, void__);
|
| + checkLub(void___C_C, void____B_C, void__);
|
| + checkLub(void___C_C, void____C_C, void__);
|
| +
|
| + checkLub(void____B, Object_, Object_);
|
| + checkLub(void____B, Function_, Function_);
|
| + checkLub(void____B, dynamic__, dynamic__);
|
| + checkLub(void____B, void__, void__);
|
| + checkLub(void____B, A__, void__);
|
| + checkLub(void____B, B__, void__);
|
| + checkLub(void____B, C__, void__);
|
| + checkLub(void____B, void__A_B, Function_);
|
| + checkLub(void____B, void__A_C, Function_);
|
| + checkLub(void____B, void__B_A, Function_);
|
| + checkLub(void____B, void__B_C, Function_);
|
| + checkLub(void____B, void___B, void__);
|
| + checkLub(void____B, void___B_C, void__);
|
| + checkLub(void____B, void___C_C, void__);
|
| + checkLub(void____B, void____B, void____B);
|
| + checkLub(void____B, void____B_C, void____B);
|
| + checkLub(void____B, void____C_C, void____B);
|
| +
|
| + checkLub(void____B_C, Object_, Object_);
|
| + checkLub(void____B_C, Function_, Function_);
|
| + checkLub(void____B_C, dynamic__, dynamic__);
|
| + checkLub(void____B_C, void__, void__);
|
| + checkLub(void____B_C, A__, void__);
|
| + checkLub(void____B_C, B__, void__);
|
| + checkLub(void____B_C, C__, void__);
|
| + checkLub(void____B_C, void__A_B, Function_);
|
| + checkLub(void____B_C, void__A_C, Function_);
|
| + checkLub(void____B_C, void__B_A, Function_);
|
| + checkLub(void____B_C, void__B_C, Function_);
|
| + checkLub(void____B_C, void___B, void__);
|
| + checkLub(void____B_C, void___B_C, void__);
|
| + checkLub(void____B_C, void___C_C, void__);
|
| + checkLub(void____B_C, void____B, void____B);
|
| + checkLub(void____B_C, void____B_C, void____B_C);
|
| + checkLub(void____B_C, void____C_C, void____B_C);
|
| +
|
| + checkLub(void____C_C, Object_, Object_);
|
| + checkLub(void____C_C, Function_, Function_);
|
| + checkLub(void____C_C, dynamic__, dynamic__);
|
| + checkLub(void____C_C, void__, void__);
|
| + checkLub(void____C_C, A__, void__);
|
| + checkLub(void____C_C, B__, void__);
|
| + checkLub(void____C_C, C__, void__);
|
| + checkLub(void____C_C, void__A_B, Function_);
|
| + checkLub(void____C_C, void__A_C, Function_);
|
| + checkLub(void____C_C, void__B_A, Function_);
|
| + checkLub(void____C_C, void__B_C, Function_);
|
| + checkLub(void____C_C, void___B, void__);
|
| + checkLub(void____C_C, void___B_C, void__);
|
| + checkLub(void____C_C, void___C_C, void__);
|
| + checkLub(void____C_C, void____B, void____B);
|
| + checkLub(void____C_C, void____B_C, void____B_C);
|
| + checkLub(void____C_C, void____C_C, void____C_C);
|
| + }));
|
| }
|
|
|
| void testTypeVariable() {
|
| @@ -710,143 +703,140 @@ void testTypeVariable() {
|
| W extends V,
|
| X extends T> {}
|
| """).then((env) {
|
| -
|
| - // A B
|
| - // | / \
|
| - // S T C
|
| - // / \ \
|
| - // V X U
|
| - // /
|
| - // W
|
| -
|
| - DartType Object_ = env['Object'];
|
| - DartType A = env['A'];
|
| - DartType B = env['B'];
|
| - DartType C = env['C'];
|
| - ClassElement I = env.getElement('I');
|
| - DartType S = I.typeVariables[0];
|
| - DartType T = I.typeVariables[1];
|
| - DartType U = I.typeVariables[2];
|
| - DartType V = I.typeVariables[3];
|
| - DartType W = I.typeVariables[4];
|
| - DartType X = I.typeVariables[5];
|
| -
|
| - checkLub(DartType a, DartType b, DartType expectedLub) {
|
| - DartType lub = env.computeLeastUpperBound(a, b);
|
| - Expect.equals(expectedLub, lub,
|
| - 'Unexpected lub($a,$b) = $lub, expected $expectedLub');
|
| - }
|
| -
|
| - checkLub(Object_, Object_, Object_);
|
| - checkLub(Object_, A, Object_);
|
| - checkLub(Object_, B, Object_);
|
| - checkLub(Object_, C, Object_);
|
| - checkLub(Object_, S, Object_);
|
| - checkLub(Object_, T, Object_);
|
| - checkLub(Object_, U, Object_);
|
| - checkLub(Object_, V, Object_);
|
| - checkLub(Object_, W, Object_);
|
| - checkLub(Object_, X, Object_);
|
| -
|
| - checkLub(A, Object_, Object_);
|
| - checkLub(A, A, A);
|
| - checkLub(A, B, Object_);
|
| - checkLub(A, C, Object_);
|
| - checkLub(A, S, A);
|
| - checkLub(A, T, Object_);
|
| - checkLub(A, U, Object_);
|
| - checkLub(A, V, Object_);
|
| - checkLub(A, W, Object_);
|
| - checkLub(A, X, Object_);
|
| -
|
| - checkLub(B, Object_, Object_);
|
| - checkLub(B, A, Object_);
|
| - checkLub(B, B, B);
|
| - checkLub(B, C, B);
|
| - checkLub(B, S, Object_);
|
| - checkLub(B, T, B);
|
| - checkLub(B, U, B);
|
| - checkLub(B, V, B);
|
| - checkLub(B, W, B);
|
| - checkLub(B, X, B);
|
| -
|
| - checkLub(C, Object_, Object_);
|
| - checkLub(C, A, Object_);
|
| - checkLub(C, B, B);
|
| - checkLub(C, C, C);
|
| - checkLub(C, S, Object_);
|
| - checkLub(C, T, B);
|
| - checkLub(C, U, C);
|
| - checkLub(C, V, B);
|
| - checkLub(C, W, B);
|
| - checkLub(C, X, B);
|
| -
|
| - checkLub(S, Object_, Object_);
|
| - checkLub(S, A, A);
|
| - checkLub(S, B, Object_);
|
| - checkLub(S, C, Object_);
|
| - checkLub(S, S, S);
|
| - checkLub(S, T, Object_);
|
| - checkLub(S, U, Object_);
|
| - checkLub(S, V, Object_);
|
| - checkLub(S, W, Object_);
|
| - checkLub(S, X, Object_);
|
| -
|
| - checkLub(T, Object_, Object_);
|
| - checkLub(T, A, Object_);
|
| - checkLub(T, B, B);
|
| - checkLub(T, C, B);
|
| - checkLub(T, S, Object_);
|
| - checkLub(T, T, T);
|
| - checkLub(T, U, B);
|
| - checkLub(T, V, T);
|
| - checkLub(T, W, T);
|
| - checkLub(T, X, T);
|
| -
|
| - checkLub(U, Object_, Object_);
|
| - checkLub(U, A, Object_);
|
| - checkLub(U, B, B);
|
| - checkLub(U, C, C);
|
| - checkLub(U, S, Object_);
|
| - checkLub(U, T, B);
|
| - checkLub(U, U, U);
|
| - checkLub(U, V, B);
|
| - checkLub(U, W, B);
|
| - checkLub(U, X, B);
|
| -
|
| - checkLub(V, Object_, Object_);
|
| - checkLub(V, A, Object_);
|
| - checkLub(V, B, B);
|
| - checkLub(V, C, B);
|
| - checkLub(V, S, Object_);
|
| - checkLub(V, T, T);
|
| - checkLub(V, U, B);
|
| - checkLub(V, V, V);
|
| - checkLub(V, W, V);
|
| - checkLub(V, X, T);
|
| -
|
| - checkLub(W, Object_, Object_);
|
| - checkLub(W, A, Object_);
|
| - checkLub(W, B, B);
|
| - checkLub(W, C, B);
|
| - checkLub(W, S, Object_);
|
| - checkLub(W, T, T);
|
| - checkLub(W, U, B);
|
| - checkLub(W, V, V);
|
| - checkLub(W, W, W);
|
| - checkLub(W, X, T);
|
| -
|
| - checkLub(X, Object_, Object_);
|
| - checkLub(X, A, Object_);
|
| - checkLub(X, B, B);
|
| - checkLub(X, C, B);
|
| - checkLub(X, S, Object_);
|
| - checkLub(X, T, T);
|
| - checkLub(X, U, B);
|
| - checkLub(X, V, T);
|
| - checkLub(X, W, T);
|
| - checkLub(X, X, X);
|
| - }));
|
| + // A B
|
| + // | / \
|
| + // S T C
|
| + // / \ \
|
| + // V X U
|
| + // /
|
| + // W
|
| +
|
| + DartType Object_ = env['Object'];
|
| + DartType A = env['A'];
|
| + DartType B = env['B'];
|
| + DartType C = env['C'];
|
| + ClassElement I = env.getElement('I');
|
| + DartType S = I.typeVariables[0];
|
| + DartType T = I.typeVariables[1];
|
| + DartType U = I.typeVariables[2];
|
| + DartType V = I.typeVariables[3];
|
| + DartType W = I.typeVariables[4];
|
| + DartType X = I.typeVariables[5];
|
| +
|
| + checkLub(DartType a, DartType b, DartType expectedLub) {
|
| + DartType lub = env.computeLeastUpperBound(a, b);
|
| + Expect.equals(expectedLub, lub,
|
| + 'Unexpected lub($a,$b) = $lub, expected $expectedLub');
|
| + }
|
| +
|
| + checkLub(Object_, Object_, Object_);
|
| + checkLub(Object_, A, Object_);
|
| + checkLub(Object_, B, Object_);
|
| + checkLub(Object_, C, Object_);
|
| + checkLub(Object_, S, Object_);
|
| + checkLub(Object_, T, Object_);
|
| + checkLub(Object_, U, Object_);
|
| + checkLub(Object_, V, Object_);
|
| + checkLub(Object_, W, Object_);
|
| + checkLub(Object_, X, Object_);
|
| +
|
| + checkLub(A, Object_, Object_);
|
| + checkLub(A, A, A);
|
| + checkLub(A, B, Object_);
|
| + checkLub(A, C, Object_);
|
| + checkLub(A, S, A);
|
| + checkLub(A, T, Object_);
|
| + checkLub(A, U, Object_);
|
| + checkLub(A, V, Object_);
|
| + checkLub(A, W, Object_);
|
| + checkLub(A, X, Object_);
|
| +
|
| + checkLub(B, Object_, Object_);
|
| + checkLub(B, A, Object_);
|
| + checkLub(B, B, B);
|
| + checkLub(B, C, B);
|
| + checkLub(B, S, Object_);
|
| + checkLub(B, T, B);
|
| + checkLub(B, U, B);
|
| + checkLub(B, V, B);
|
| + checkLub(B, W, B);
|
| + checkLub(B, X, B);
|
| +
|
| + checkLub(C, Object_, Object_);
|
| + checkLub(C, A, Object_);
|
| + checkLub(C, B, B);
|
| + checkLub(C, C, C);
|
| + checkLub(C, S, Object_);
|
| + checkLub(C, T, B);
|
| + checkLub(C, U, C);
|
| + checkLub(C, V, B);
|
| + checkLub(C, W, B);
|
| + checkLub(C, X, B);
|
| +
|
| + checkLub(S, Object_, Object_);
|
| + checkLub(S, A, A);
|
| + checkLub(S, B, Object_);
|
| + checkLub(S, C, Object_);
|
| + checkLub(S, S, S);
|
| + checkLub(S, T, Object_);
|
| + checkLub(S, U, Object_);
|
| + checkLub(S, V, Object_);
|
| + checkLub(S, W, Object_);
|
| + checkLub(S, X, Object_);
|
| +
|
| + checkLub(T, Object_, Object_);
|
| + checkLub(T, A, Object_);
|
| + checkLub(T, B, B);
|
| + checkLub(T, C, B);
|
| + checkLub(T, S, Object_);
|
| + checkLub(T, T, T);
|
| + checkLub(T, U, B);
|
| + checkLub(T, V, T);
|
| + checkLub(T, W, T);
|
| + checkLub(T, X, T);
|
| +
|
| + checkLub(U, Object_, Object_);
|
| + checkLub(U, A, Object_);
|
| + checkLub(U, B, B);
|
| + checkLub(U, C, C);
|
| + checkLub(U, S, Object_);
|
| + checkLub(U, T, B);
|
| + checkLub(U, U, U);
|
| + checkLub(U, V, B);
|
| + checkLub(U, W, B);
|
| + checkLub(U, X, B);
|
| +
|
| + checkLub(V, Object_, Object_);
|
| + checkLub(V, A, Object_);
|
| + checkLub(V, B, B);
|
| + checkLub(V, C, B);
|
| + checkLub(V, S, Object_);
|
| + checkLub(V, T, T);
|
| + checkLub(V, U, B);
|
| + checkLub(V, V, V);
|
| + checkLub(V, W, V);
|
| + checkLub(V, X, T);
|
| +
|
| + checkLub(W, Object_, Object_);
|
| + checkLub(W, A, Object_);
|
| + checkLub(W, B, B);
|
| + checkLub(W, C, B);
|
| + checkLub(W, S, Object_);
|
| + checkLub(W, T, T);
|
| + checkLub(W, U, B);
|
| + checkLub(W, V, V);
|
| + checkLub(W, W, W);
|
| + checkLub(W, X, T);
|
| +
|
| + checkLub(X, Object_, Object_);
|
| + checkLub(X, A, Object_);
|
| + checkLub(X, B, B);
|
| + checkLub(X, C, B);
|
| + checkLub(X, S, Object_);
|
| + checkLub(X, T, T);
|
| + checkLub(X, U, B);
|
| + checkLub(X, V, T);
|
| + checkLub(X, W, T);
|
| + checkLub(X, X, X);
|
| + }));
|
| }
|
| -
|
| -
|
|
|