392db8d312
When converting null to a boolean value, throw an AssertionError rather than a TypeError. This is the same change as r42145, with added co19 status updates. R=srdjan@google.com Review URL: https://codereview.chromium.org//779253003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42170 260f80e4-7a28-3924-810f-c04153c831b5
54 lines
1.2 KiB
Dart
54 lines
1.2 KiB
Dart
// Copyright (c) 2014, 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.
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
bool typeChecksEnabled() {
|
|
try {
|
|
var i = 42;
|
|
String s = i;
|
|
} on TypeError catch (e) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool assertionsEnabled() {
|
|
try {
|
|
assert(false);
|
|
return false;
|
|
} on AssertionError catch (e) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
final bool typeChecksOn = typeChecksEnabled();
|
|
final bool assertionsOn = assertionsEnabled();
|
|
|
|
ifExpr(e) { if (e) return true; else return false; }
|
|
bool ifNull() => ifExpr(null);
|
|
bool ifString() => ifExpr("true");
|
|
|
|
main() {
|
|
print("type checks: $typeChecksOn");
|
|
print("assertions: $assertionsOn");
|
|
|
|
if (typeChecksOn) {
|
|
Expect.throws(ifNull, (e) => e is AssertionError);
|
|
}
|
|
if (assertionsOn && !typeChecksOn) {
|
|
Expect.throws(ifNull, (e) => e is AssertionError);
|
|
}
|
|
if (!typeChecksOn && !assertionsOn) {
|
|
Expect.identical(false, ifNull());
|
|
}
|
|
|
|
if (!typeChecksOn) {
|
|
Expect.identical(false, ifString());
|
|
}
|
|
if (typeChecksOn) {
|
|
Expect.throws(ifString, (e) => e is TypeError);
|
|
}
|
|
} |