Algebra.QL.TypeCheck.Expr.SubtractExpr.TypeCheck C# (CSharp) Метод

TypeCheck() публичный Метод

public TypeCheck ( ITypeEnvironment env ) : ITypeCheckType
env ITypeEnvironment
Результат ITypeCheckType
        public override ITypeCheckType TypeCheck(ITypeEnvironment env)
        {
            ITypeCheckType a = Expr1.TypeCheck(env);
            ITypeCheckType b = Expr2.TypeCheck(env);

            if (!a.CompatibleWith(ExpressionUpperBound) || !a.CompatibleWith(b))
            {
                env.ReportError(String.Format("Subtraction not possible. Incompatible types: '{0}', '{1}'. Only numeric types are supported.",
                    a, b), SourceStartPosition, SourceEndPosition);

                return ExpressionUpperBound;
            }

            return a.GetLeastUpperBound(b);
        }