| Index: dart/tests/compiler/dart2js_native/type_error_decode_test.dart
|
| diff --git a/dart/tests/compiler/dart2js_native/type_error_decode_test.dart b/dart/tests/compiler/dart2js_native/type_error_decode_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3c9a8f0ace7c5a0d482559c2113ec25c52208170
|
| --- /dev/null
|
| +++ b/dart/tests/compiler/dart2js_native/type_error_decode_test.dart
|
| @@ -0,0 +1,52 @@
|
| +// 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.
|
| +
|
| +library test.type_error_decode_test;
|
| +
|
| +import 'package:expect/expect.dart';
|
| +
|
| +import 'dart:_js_helper';
|
| +
|
| +class Foo {
|
| + var field;
|
| +}
|
| +
|
| +isNullError(e, trace) {
|
| + print('$e\nTrace: $trace');
|
| + return e is NullError;
|
| +}
|
| +
|
| +isJsNoSuchMethodError(e, trace) {
|
| + print('$e\nTrace: $trace');
|
| + return e is JsNoSuchMethodError;
|
| +}
|
| +
|
| +expectThrows(f, check) {
|
| + try {
|
| + f();
|
| + } catch (e, trace) {
|
| + if (check(e, trace)) {
|
| + return;
|
| + }
|
| + throw 'Unexpected exception: $e\n$trace';
|
| + }
|
| + throw 'No exception thrown';
|
| +}
|
| +
|
| +main() {
|
| + var x = null;
|
| + var z = new Object();
|
| + var v = new List(1)[0];
|
| + var s = "Cannot call method 'foo' of null";
|
| + var nul = null;
|
| + var f = new Foo();
|
| + // This should foil code analysis so the variables aren't inlined below.
|
| + [].forEach((y) => f.field = nul = s = x = z = v = y);
|
| + expectThrows(() => x.fisk(), isNullError);
|
| + expectThrows(() => v.fisk(), isNullError);
|
| + expectThrows(() => z.fisk(), isJsNoSuchMethodError);
|
| + expectThrows(() => s.fisk(), isJsNoSuchMethodError);
|
| + expectThrows(() => null(), isNullError);
|
| + expectThrows(() => f.field(), isNullError);
|
| +}
|
|
|