addCaseWhenExpression method

void addCaseWhenExpression(
  1. CaseWhenExpression<Object, Object> expr
)

Implementation

void addCaseWhenExpression(CaseWhenExpression expr) {
  statement.buffer.write('CASE');

  if (expr.base case final base?) {
    statement.buffer.write(' ');
    base.compileWith(this);
  }

  for (final (when: condition, :then) in expr.orderedCases) {
    statement.buffer.write(' WHEN ');
    condition.compileWith(this);
    statement.buffer.write(' THEN ');
    then.compileWith(this);
  }

  if (expr.orElse case final orElse?) {
    statement.buffer.write(' ELSE ');
    orElse.compileWith(this);
  }

  statement.buffer.write(' END');
}