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'; |
-} |