resolveType method

  1. @override
FutureOr<ASTType> resolveType(
  1. VMContext? context
)
override

Implementation

@override
FutureOr<ASTType> resolveType(VMContext? context) {
  switch (operator) {
    case ASTExpressionOperator.add:
    case ASTExpressionOperator.subtract:
    case ASTExpressionOperator.multiply:
    case ASTExpressionOperator.divide:
      {
        var retT1 = expression1.resolveType(context);
        var retT2 = expression2.resolveType(context);

        return retT1.resolveBoth(
            retT2, (t1, t2) => _resolveTypePair(t1, t2, context));
      }
    case ASTExpressionOperator.divideAsInt:
      return ASTTypeInt.instance;
    case ASTExpressionOperator.divideAsDouble:
      return ASTTypeDouble.instance;
    case ASTExpressionOperator.equals:
    case ASTExpressionOperator.notEquals:
    case ASTExpressionOperator.greater:
    case ASTExpressionOperator.greaterOrEq:
    case ASTExpressionOperator.lower:
    case ASTExpressionOperator.lowerOrEq:
      return ASTTypeBool.instance;
  }
}