Index: tests/language/issue12336_test.dart |
=================================================================== |
--- tests/language/issue12336_test.dart (revision 0) |
+++ tests/language/issue12336_test.dart (revision 0) |
@@ -0,0 +1,32 @@ |
+// 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. |
+ |
+// Regression test for dart2js that used to generate wrong code for |
+// [foo]. |
+ |
+import "package:expect/expect.dart"; |
+import "compiler_annotations.dart"; |
+ |
+main() { |
+ var result = foo(1, 2); |
+ Expect.equals(1, result[0]); |
+ Expect.equals(2, result[1]); |
+ |
+ result = foo([], 2); |
+ Expect.equals(0, result[0]); |
+ Expect.listEquals([], result[1]); |
+} |
+ |
+@DontInline() |
+foo(a, b) { |
+ () => 42; |
+ if (a is List) { |
+ var saved = a as List; |
+ // By having two HTypeKnown SSA instructions for [a], dart2js was |
+ // confused when updating the phis at exit of this block. |
+ a = a.length; |
+ b = saved; |
+ } |
+ return [a, b]; |
+} |