public override CheckTypesResult CheckExprTypeBounds() { CheckTypesResult result = new CheckTypesResult(); if (newType.arrayDim != 0) { foreach (Exprent dim in lstDims) { result.AddMinTypeExprent(dim, VarType.Vartype_Bytechar); result.AddMaxTypeExprent(dim, VarType.Vartype_Int); } if (newType.arrayDim == 1) { VarType leftType = newType.DecreaseArrayDim(); foreach (Exprent element in lstArrayElements) { result.AddMinTypeExprent(element, VarType.GetMinTypeInFamily(leftType.typeFamily) ); result.AddMaxTypeExprent(element, leftType); } } } else if (constructor != null) { return(constructor.CheckExprTypeBounds()); } return(result); }
public override VarType GetExprType() { VarType exprType = array.GetExprType(); if (exprType.Equals(VarType.Vartype_Null)) { return(hardType.Copy()); } else { return(exprType.DecreaseArrayDim()); } }