typing: warn when comparing null and not nullable
authorJean Privat <jean@pryen.org>
Sat, 13 Jun 2009 04:42:08 +0000 (00:42 -0400)
committerJean Privat <jean@pryen.org>
Wed, 24 Jun 2009 20:01:53 +0000 (16:01 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

src/syntax/typing.nit

index ff61191..921ea14 100644 (file)
@@ -1305,9 +1305,27 @@ redef class ABinopExpr
 end
 redef class AEqExpr
        redef meth name do return once "==".to_symbol
+       redef meth after_typing(v)
+       do
+               super
+               if not is_typed then return
+               if n_expr.stype isa MMTypeNone and not n_expr2.stype.is_nullable or
+               n_expr2.stype isa MMTypeNone and not n_expr.stype.is_nullable then
+                       v.warning(self, "Warning: comparaison between null and a non nullable value.")
+               end
+       end
 end
 redef class ANeExpr
        redef meth name do return once "!=".to_symbol
+       redef meth after_typing(v)
+       do
+               super
+               if not is_typed then return
+               if n_expr.stype isa MMTypeNone and not n_expr2.stype.is_nullable or
+               n_expr2.stype isa MMTypeNone and not n_expr.stype.is_nullable then
+                       v.warning(self, "Warning: comparaison between null and a non nullable value.")
+               end
+       end
 end
 redef class ALtExpr
        redef meth name do return once "<".to_symbol