/// <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"); } } } }
public Types.Type GetCompatibleType(Types.BoolType leftType, Types.BoolType rightType) { return(new Types.BoolType()); }