Chromium Code Reviews| Index: tests/language/type_propagation3_test.dart |
| diff --git a/tests/language/type_propagation3_test.dart b/tests/language/type_propagation3_test.dart |
| deleted file mode 100644 |
| index 2848f9b54342f3354da44328e7c26aed88b71cd6..0000000000000000000000000000000000000000 |
| --- a/tests/language/type_propagation3_test.dart |
| +++ /dev/null |
| @@ -1,57 +0,0 @@ |
| -// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
|
eernst
2017/09/04 17:04:56
Lost coverage: don't delete this 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 dart2js that used to generate wrong code for |
| -// it. The bug happened in the SSA type propagation. |
| - |
| -class A { |
| - next() => new B(); |
| - doIt() => null; |
| - bool get isEmpty => false; |
| - foo() => 42; |
| - bar() => 54; |
| -} |
| - |
| -bool entered = false; |
| - |
| -class B extends A { |
| - foo() => 54; |
| - doIt() => new A(); |
| - bool get isEmpty => true; |
| - bar() => entered = true; |
| -} |
| - |
| -// (1) At initialization phase of the type propagation, [a] would be |
| -// marked as [exact A]. |
| -// (2) Will make the loop phi [b] typed [null, exact A]. |
| -// (3) Will create a [HTypeKnown] [exact A] for [b]. |
| -// (4) Will create a [HTypeKnown] [exact A] for [b] and update users |
| -// of [b] to use this [HTypeKnown] instead. |
| -// (5) [a] will be updated to [subclass A]. |
| -// (6) Will change the [HTypeKnown] of [b] from [exact A] to [subclass A]. |
| -// (7) Receiver is [subclass A] and it will refine it to |
| -// [subclass A]. We used to wrongly assume there was |
| -// no need to update the [HTypeKnown] created in (3). |
| -// (8) Consider that bar is called on an [exact A] (the [HTypeKnown] |
| -// created in (3)) and remove the call because it does not have |
| -// any side effects. |
| - |
| -main() { |
| - var a = new A(); |
| - for (var i in [42]) { |
| - a = a.next(); |
| - } |
| - |
| - // (1, 5) |
| - |
| - var b = a; |
| - while (b.isEmpty) { |
| - // (4, 6) |
| - b.foo(); // (3, 7) |
| - b.bar(); // (8) |
| - b = b.doIt(); // (2) |
| - } |
| - |
| - if (!entered) throw 'Test failed'; |
| -} |