Index: tests/compiler/dart2js_extra/21166_test.dart |
diff --git a/tests/compiler/dart2js_extra/21166_test.dart b/tests/compiler/dart2js_extra/21166_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bc8f63bf16180f22207086fa8ad4978cec970d4b |
--- /dev/null |
+++ b/tests/compiler/dart2js_extra/21166_test.dart |
@@ -0,0 +1,25 @@ |
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
floitsch
2015/02/18 13:52:47
I prefer if it is in the language tests.
Give the
|
+// 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 http://dartbug.com/21166/ |
+// Fails when compiling with --checked. |
floitsch
2015/02/18 13:52:47
Shouldn't fail.
|
+ |
+var a = []; |
+ |
+void doStuff() { |
+ if (a.length) { // This triggers a TypeConversion to bool in checked mode. |
+ var element = a[0]; // This triggers a bounds check but a.length will have |
+ a.remove(element); // type [empty]. |
+ } |
+} |
+ |
+main() { |
+ a.add(1); |
+ a.add(2); |
+ try { |
+ doStuff(); // This is expected to fail but not crash the compiler. |
floitsch
2015/02/18 13:52:47
Check your operations.
|
+ } catch (_) {} |
floitsch
2015/02/18 13:52:47
Make sure this is a TypeError.
|
+} |
+ |
+ |