Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Unified Diff: dart/tests/language/crash_6725_test.dart

Issue 13866010: Correctly compile unresolved for-in loops. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Additional problems found during testing. Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: dart/tests/language/crash_6725_test.dart
diff --git a/dart/tests/language/crash_6725_test.dart b/dart/tests/language/crash_6725_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..f9cbb18878bf338b1fdec71f521c8e3b6a37629c
--- /dev/null
+++ b/dart/tests/language/crash_6725_test.dart
@@ -0,0 +1,71 @@
+// 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 a crash in dart2js.
+
+class Fisk {
+ it1(x) {
+ // "key" is unresolved and caused a crash in dart2js.
+ // This is the original example the user reported.
+ for (key in x) {
+ print(key);
+ }
+ }
+
+ it2(x) {
+ // "length" is "intercepted" and handled differently from other
+ // names when an instance of list is observed.
+ for (length in x) {
+ print(length);
+ }
+ }
+
+ it3(x) {
+ // We're pretty sure that there's no "fisk" that is "intercepted".
+ for (fisk in x) {
+ print(fisk);
+ }
+ }
+}
+
+class SubFisk extends Fisk {
+ var key;
+ var length;
+ var fisk;
+}
+
+main() {
+ Fisk f = new SubFisk();
+ var m = (x) {
+ for (undeclared in x) {
+ print(undeclared);
+ }
+ };
+ if (new DateTime.now().millisecondsSinceEpoch == 42) {
+ f = null;
+ m = (x) {};
+ }
+
+ f.it1([87, 42]);
+ if (f.key != 42) {
+ throw 'f.key != 42 (${f.key})';
+ }
+
+ f.it2([87, 42]);
+ if (f.length != 42) {
+ throw 'f.length != 42 (${f.length})';
+ }
+
+ f.it3([87, 42]);
+ if (f.fisk != 42) {
+ throw 'f.fisk != 42 (${f.fisk})';
+ }
+
+ try {
+ m([87, 42]);
+ throw 'NoSuchMethodError expected';
+ } on NoSuchMethodError {
+ // Expected.
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698