error = true;
Report.error (source_reference, "Assignment: Cannot convert from `%s' to `%s'", right.value_type.to_string (), left.value_type.to_string ());
return false;
- } else if (left.value_type is EnumValueType && right.value_type is IntegerType) {
+ } else if (left.value_type is EnumValueType && right.value_type is IntegerType
+ && (!(right is IntegerLiteral) || ((IntegerLiteral) right).value != "0")) {
//FIXME This will have to be an error in the future?
Report.notice (source_reference, "Assignment: Unsafe conversion from `%s' to `%s'", right.value_type.to_string (), left.value_type.to_string ());
}
error = true;
Report.error (source_reference, "Assignment: Cannot convert from `%s' to `%s'", initializer.value_type.to_string (), variable_type.to_string ());
return false;
- } else if (variable_type is EnumValueType && initializer.value_type is IntegerType) {
+ } else if (variable_type is EnumValueType && initializer.value_type is IntegerType
+ && (!(initializer is IntegerLiteral) || ((IntegerLiteral) initializer).value != "0")) {
//FIXME This will have to be an error in the future?
Report.notice (source_reference, "Assignment: Unsafe conversion from `%s' to `%s'", initializer.value_type.to_string (), variable_type.to_string ());
}