typeFromExpressions static method

FutureOr<ASTType> typeFromExpressions(
  1. Iterable<ASTExpression> expressions, {
  2. VMContext? context,
})

Implementation

static FutureOr<ASTType> typeFromExpressions(
    Iterable<ASTExpression> expressions,
    {VMContext? context}) {
  var types = expressions.map((e) => e.resolveType(context)).toSet();

  if (types.isEmpty) {
    return ASTTypeDynamic.instance;
  } else if (types.length == 1) {
    return types.first;
  }

  return types.resolveAll().resolveMapped((types) {
    if (types.every((t) => t is ASTTypeNumber)) {
      return ASTTypeNum.instance;
    }

    return ASTTypeDynamic.instance;
  });
}