in Sources/SolToBoogie/MapArrayHelper.cs [31:82]
public static BoogieType InferExprTypeFromTypeString(string typeString)
{
//TODO: use TypeDescriptions::IsInt/IsStruct etc., but need typeDescription instead of typeString
if (IsArrayTypeString(typeString))
{
return BoogieType.Ref;
}
else if (IsMappingTypeString(typeString))
{
return BoogieType.Ref;
}
else if (typeString.Equals("address") || typeString.Equals("address payable"))
{
return BoogieType.Ref;
}
else if (typeString.Equals("bool"))
{
return BoogieType.Bool;
}
else if (typeString.StartsWith("uint") && !typeString.Contains("["))
{
return BoogieType.Int;
}
else if (typeString.StartsWith("int") && !typeString.Contains("["))
{
return BoogieType.Int;
}
else if (typeString.StartsWith("byte") && !typeString.Contains("["))
{
return BoogieType.Int;
}
else if (typeString.StartsWith("contract "))
{
return BoogieType.Ref;
}
else if (typeString.StartsWith("struct "))
{
return BoogieType.Ref;
}
else if (typeString.Equals("string") || typeString.StartsWith("string "))
{
return BoogieType.Int; //we think of string as its hash
}
else if (typeString.StartsWith("literal_string "))
{
return BoogieType.Int; //we think of string as its hash
}
else
{
throw new SystemException($"Cannot infer from type string: {typeString}");
}
}