logical method
&& and || of two bools.
Implementation
Expression logical(ExpressionToken op, Expression left, Expression right) {
if (!left.type.isBoolean || !right.type.isBoolean) {
fail(
'"${op.text}" takes two bools, and was given a ${left.type} and a '
'${right.type}.',
where: op,
);
}
return ExpressionBinary(op.text, left, right, ExpressionType.boolean);
}