/// <summary>
        /// Checks the statement for semantical errors
        /// </summary>
        public override void CheckStatement()
        {
            Value.checkExpression();

            Types.Collection targetListType = ListExpression.GetExpressionType() as Types.Collection;
            if (targetListType != null)
            {
                Types.Type elementType = Value.GetExpressionType();
                if (elementType != targetListType.Type)
                {
                    Root.AddError("Inserted element type does not corresponds to list type");
                }

                Condition.checkExpression();
                Types.BoolType conditionType = Condition.GetExpressionType() as Types.BoolType;
                if (conditionType == null)
                {
                    Root.AddError("Condition does not evaluates to boolean");
                }
            }
            else
            {
                Root.AddError("Cannot determine collection type of " + ListExpression);
            }
        }
 /// <summary>
 /// Checks the statement for semantical errors
 /// </summary>
 public override void CheckStatement()
 {
     Types.Collection targetListType = ListExpression.GetExpressionType() as Types.Collection;
     if (targetListType == null)
     {
         Root.AddError("Cannot determine type of " + ListExpression);
     }
     else
     {
         if (Condition != null)
         {
             Condition.checkExpression();
             Types.BoolType conditionType = Condition.GetExpressionType() as Types.BoolType;
             if (conditionType == null)
             {
                 Root.AddError("Condition does not evaluates to boolean");
             }
         }
     }
 }
Пример #3
0
 public Types.Type GetCompatibleType(Types.BoolType leftType, Types.BoolType rightType)
 {
     return(new Types.BoolType());
 }