blob: 1c37f03964a09acf09893036e71850a8f8c6b293 [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.
library test.type_error_decode_test;
import 'native_testing.dart';
import 'dart:_js_helper' show NullError, JsNoSuchMethodError;
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();
expectThrows(() => x.fisk(), isNullError);
expectThrows(() => v.fisk(), isNullError);
expectThrows(() => z.fisk(), isJsNoSuchMethodError);
expectThrows(() => s.fisk(), isJsNoSuchMethodError);
expectThrows(() => null(), isNullError);
expectThrows(() => f.field(), isNullError);
expectThrows(() => confuse(x).fisk(), isNullError);
expectThrows(() => confuse(v).fisk(), isNullError);
expectThrows(() => confuse(z).fisk(), isJsNoSuchMethodError);
expectThrows(() => confuse(s).fisk(), isJsNoSuchMethodError);
expectThrows(() => confuse(null)(), isNullError);
expectThrows(() => confuse(f).field(), isNullError);
expectThrows(() => confuse(f.field)(), isNullError);
}