| Index: tests/language/type_propagation_test.dart
|
| ===================================================================
|
| --- tests/language/type_propagation_test.dart (revision 23577)
|
| +++ tests/language/type_propagation_test.dart (working copy)
|
| @@ -1,43 +0,0 @@
|
| -// Copyright (c) 2013, 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.
|
| -
|
| -// dart2js used to have an infinite loop in its type propagation
|
| -// algorithm due to types becoming broader instead of narrower.
|
| -
|
| -import "package:expect/expect.dart";
|
| -
|
| -class A {
|
| - resolveSend(node) {
|
| - if (node == null) {
|
| - return [new B()][0];
|
| - } else {
|
| - return [new B(), new A()][1];
|
| - }
|
| - }
|
| -
|
| - visitSend(node) {
|
| - var target = resolveSend(node);
|
| -
|
| - if (false) {
|
| - if (false) {
|
| - target = target.getter;
|
| - if (false) {
|
| - target = new Object();
|
| - }
|
| - }
|
| - }
|
| - return true ? target : null;
|
| - }
|
| -}
|
| -
|
| -var a = 43;
|
| -
|
| -class B {
|
| - var getter = a == 42 ? new A() : null;
|
| -}
|
| -
|
| -main() {
|
| - Expect.isTrue(new A().visitSend(new A()) is A);
|
| - Expect.isTrue(new A().visitSend(null) is B);
|
| -}
|
|
|