BFSchema.TypeChecking.CheckType C# (CSharp) Method

CheckType() private method

private CheckType ( BfsExpGroup group, BfsPrimitiveTypeEnum type, IBfsDataBlock block ) : void
group BfsExpGroup
type BfsPrimitiveTypeEnum
block IBfsDataBlock
return void
        private void CheckType(BfsExpGroup group, BfsPrimitiveTypeEnum type, IBfsDataBlock block)
        {
            //If boolean and non-boolean types are mixed.
            if((group.PrimitiveType == BfsPrimitiveTypeEnum.Bool && type > BfsPrimitiveTypeEnum.Bool))
                BfsCompiler.ReportError(group.SourceRange, "Cannot mix boolean and " + type + " types");
            else if(type == BfsPrimitiveTypeEnum.Bool && group.PrimitiveType > BfsPrimitiveTypeEnum.Bool)
                BfsCompiler.ReportError(group.SourceRange, "Cannot mix boolean and " + group.PrimitiveType + " types");

            //if (type == BfsPrimitiveTypeEnum.FunctionType || group.PrimitiveType == BfsPrimitiveTypeEnum.FunctionType)
            //    BfsCompiler.ReportError(group.SourceRange, "You cannot use function typed variables in expressions");

            if (type == BfsPrimitiveTypeEnum.Undetermined)
                BfsCompiler.ReportError(group.SourceRange,"Undetermined type of variable");

            //If all is well then it will pick the largest type that can contain the variable.
            //Hiearchy: Undetermined,Bool,Ubyte,Sbyte,Ushort,Short,Uint,Int,Ulong,Long
            BfsPrimitiveTypeEnum a = group.PrimitiveType;
            BfsPrimitiveTypeEnum b = type;
            group.PrimitiveType = (a > b) ? a : b;
        }