[dart/en]Fix bool implicit conversions support.

Implicit conversions of bool are supported now.
This commit is contained in:
OKry 2018-11-07 14:29:27 +08:00 committed by GitHub
parent 76e5f436df
commit ffc33ee560
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -176,23 +176,47 @@ example13() {
match(s2); match(s2);
} }
// Boolean expressions need to resolve to either true or false, as no // Boolean expressions support implicit conversions and dynamic type
// implicit conversions are supported.
example14() { example14() {
var v = true; var a = true;
if (v) { if (a) {
print("Example14 value is true"); print("true, a is $a");
} }
v = null; a = null;
if (a) {
print("true, a is $a");
} else {
print("false, a is $a"); // runs here
}
// dynamic typed null can be convert to bool
var b;// b is dynamic type
b = "abc";
try { try {
if (v) { if (b) {
// Never runs print("true, b is $b");
} else { } else {
// Never runs print("false, b is $b");
} }
} catch (e) { } catch (e) {
print("Example14 null value causes an exception: '${e}'"); print("error, b is $b"); // this could be run but got error
} }
b = null;
if (b) {
print("true, b is $b");
} else {
print("false, b is $b"); // runs here
}
// statically typed null can not be convert to bool
var c = "abc";
c = null;
// complie failed
// if (c) {
// print("true, c is $c");
// } else {
// print("false, c is $c");
// }
} }
// try/catch/finally and throw are used for exception handling. // try/catch/finally and throw are used for exception handling.