visitOrderedChoice method

  1. @override
void visitOrderedChoice(
  1. OrderedChoiceExpression node
)
override

Implementation

@override
void visitOrderedChoice(OrderedChoiceExpression node) {
  final expressions = node.expressions;
  final count = expressions.length;
  final returnType = node.resultType;
  for (var i = 0; i < count; i++) {
    final expression = expressions[i];
    _setReturnType(expression, returnType);
  }

  node.visitChildren(this);
  final returnTypes = <String>{};
  for (var i = 0; i < count; i++) {
    final child = expressions[i];
    returnTypes.add(child.resultType);
  }

  if (returnTypes.contains('dynamic')) {
    _setReturnType(node, returnType);
  } else {
    if (returnTypes.length == 1) {
      _setReturnType(node, returnTypes.first);
    } else {
      _setReturnType(node, returnType);
    }
  }
}