visitSequence method

  1. @override
void visitSequence(
  1. SequenceExpression node
)
override

Implementation

@override
void visitSequence(SequenceExpression node) {
  final expressions = node.expressions;
  final count = expressions.length;
  final returnType = node.resultType;
  node.visitChildren(this);
  final variables = expressions.where((e) => e.variable != null).toList();
  if (node.actionIndex != null) {
    _setReturnType(node, returnType);
  } else {
    if (count == 1) {
      final first = expressions.first;
      _setReturnType(node, first.resultType);
    } else {
      if (variables.isEmpty) {
        final expression = expressions.first;
        _setReturnType(node, expression.resultType);
      } else if (variables.length == 1) {
        final expression = variables.first;
        _setReturnType(node, expression.resultType);
      } else {
        final hashSet = variables.toSet();
        if (hashSet.length == 1) {
          final returnType = hashSet.first.resultType;
          _setReturnType(node, _getListReturnType(returnType));
        } else {
          _setReturnType(node, 'List');
        }
      }
    }
  }
}