Files
sdk/tests/language/bool_check_test.dart
T
hausner@google.com 392db8d312 Implement correct semantics of Boolean Conversion
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
2014-12-08 18:51:48 +00:00

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);
}
}