typing: improve reliability of `is_typed`.
authorJean Privat <jean@pryen.org>
Thu, 4 Jun 2015 02:33:41 +0000 (22:33 -0400)
committerJean Privat <jean@pryen.org>
Fri, 5 Jun 2015 19:33:33 +0000 (15:33 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

src/semantize/typing.nit

index c26ca0f..020ce3b 100644 (file)
@@ -958,7 +958,7 @@ redef class AVarReassignExpr
 
                v.set_variable(self, variable, rettype)
 
-               self.is_typed = true
+               self.is_typed = rettype != null
        end
 end
 
@@ -1004,9 +1004,11 @@ redef class AReturnExpr
                        else
                                v.visit_expr(nexpr)
                                v.error(nexpr, "Error: `return` with value in a procedure.")
+                               return
                        end
                else if ret_type != null then
                        v.error(self, "Error: `return` without value in a function.")
+                       return
                end
                self.is_typed = true
        end
@@ -2050,7 +2052,7 @@ redef class AAttrAssignExpr
                var mtype = self.attr_type
 
                v.visit_expr_subtype(self.n_value, mtype)
-               self.is_typed = true
+               self.is_typed = mtype != null
        end
 end
 
@@ -2061,9 +2063,9 @@ redef class AAttrReassignExpr
                var mtype = self.attr_type
                if mtype == null then return # Skip error
 
-               self.resolve_reassignment(v, mtype, mtype)
+               var rettype = self.resolve_reassignment(v, mtype, mtype)
 
-               self.is_typed = true
+               self.is_typed = rettype != null
        end
 end