| Index: pkg/status_file/lib/src/expression.dart
|
| diff --git a/pkg/status_file/lib/src/expression.dart b/pkg/status_file/lib/src/expression.dart
|
| index 876fb150b67497d60e00e6d8449a7c6da129b758..90559de9ceb64a8ff9bbae0ddf53528f4c03b151 100644
|
| --- a/pkg/status_file/lib/src/expression.dart
|
| +++ b/pkg/status_file/lib/src/expression.dart
|
| @@ -91,7 +91,7 @@ class _ComparisonExpression implements Expression {
|
| return negate != (left.lookup(environment) == right);
|
| }
|
|
|
| - String toString() => "(\$${left.name} ${negate ? '!=' : '=='} $right)";
|
| + String toString() => "\$${left.name} ${negate ? '!=' : '=='} $right";
|
| }
|
|
|
| /// A reference to a variable defined in the environment. The expression
|
| @@ -125,7 +125,7 @@ class _VariableExpression implements Expression {
|
| bool evaluate(Environment environment) =>
|
| negate != (variable.lookup(environment) == "true");
|
|
|
| - String toString() => "(bool ${negate ? "! " : ""}\$${variable.name})";
|
| + String toString() => "${negate ? "!" : ""}\$${variable.name}";
|
| }
|
|
|
| /// A logical `||` or `&&` expression.
|
| @@ -147,7 +147,18 @@ class _LogicExpression implements Expression {
|
| ? left.evaluate(environment) && right.evaluate(environment)
|
| : left.evaluate(environment) || right.evaluate(environment);
|
|
|
| - String toString() => "($left $op $right)";
|
| + String toString() {
|
| + String parenthesize(Expression operand) {
|
| + var result = operand.toString();
|
| + if (op == "&&" && operand is _LogicExpression && operand.op == "||") {
|
| + result = "($result)";
|
| + }
|
| +
|
| + return result;
|
| + }
|
| +
|
| + return "${parenthesize(left)} $op ${parenthesize(right)}";
|
| + }
|
| }
|
|
|
| /// Parser for Boolean expressions in a .status file for Dart.
|
|
|