visitAssignExpr method

  1. @override
void visitAssignExpr(
  1. AssignExpr node
)
override

Implementation

@override
void visitAssignExpr(AssignExpr node) {
  if (node.op == _lexicon.assignIfNull) {
    final condition = _binary(
      node.left,
      _lexicon.equal,
      _record(
        ASTLiteralNull(
          source: node.source,
          line: node.line,
          column: node.column,
          offset: node.offset,
          length: node.length,
        ),
        node,
      ),
      node,
    );
    _context.recordExpression(
      node,
      _record(
        IfExpr(
          condition,
          _assign(node.left, node.right, node),
          source: node.source,
          line: node.line,
          column: node.column,
          offset: node.offset,
          length: node.length,
        ),
        node,
      ),
    );
  } else if (node.op != _lexicon.assign) {
    final expanded = _assign(
      node.left,
      _binary(
        node.left,
        node.op.substring(0, node.op.length - 1),
        _group(node.right, node),
        node,
      ),
      node,
    );
    _context.recordExpression(node, expanded);
  }
  node.subAccept(this);
}