blob: 86878375b27ee77fb129fd9826132e34a9e9ee40 [file] [log] [blame]
// 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.
part of crash_6725;
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;
}
test() {
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.
}
}