]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
vala: Silently accept unsafe assignment of "0" literal to enum type
authorRico Tzschichholz <ricotz@ubuntu.com>
Fri, 17 Dec 2021 10:43:33 +0000 (11:43 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Fri, 17 Dec 2021 10:43:41 +0000 (11:43 +0100)
In addition to 9f1de7ae875b59939ca6200e08dddd69106fb486

vala/valaassignment.vala
vala/valalocalvariable.vala

index fdec022b6f17ddf07e1cea7484db6ef032fe8ee7..8c0948ef3f61623caad67f8a90c7aea58856b01f 100644 (file)
@@ -320,7 +320,8 @@ public class Vala.Assignment : Expression {
                                        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 ());
                                }
index 5988085c73a78a2f7094ea98a6d66585cfed669d..e2a5c92c24c843ad353c8a116ef8ec4cb5dbcad5 100644 (file)
@@ -219,7 +219,8 @@ public class Vala.LocalVariable : Variable {
                                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 ());
                        }