Add default values for some primitive type attributes.
[nit.git] / src / syntax / syntax_base.nit
index 4e4bd01..b5ac33b 100644 (file)
@@ -207,8 +207,8 @@ abstract class Variable
 
        init(n: Symbol, d: PNode)
        do
-               assert n != null
-               assert d != null
+               #assert n != null
+               #assert d != null
                _name = n
                _decl = d
        end
@@ -345,6 +345,26 @@ special Visitor
                error(n, "Type error: expected {stype}, got {subtype}")
                return false
        end
+       
+       # Check that an expression has a static type and that 
+       # Display an error and return false if n is a statement
+       # Require that the static type of n is known
+       meth check_expr(n: PExpr): Bool
+       do
+               # FIXME: The tc.error_count is a workaround since currently there is no way
+               # to distingate statements from buggy expressions: both have a null stype
+               if tc.error_count == 0 and n.stype == null then
+                       error(n, "Type error: expected expression.")
+                       return false
+               end
+               return true
+       end
+
+       # Combine check_conform and check_expr
+       meth check_conform_expr(n: PExpr, stype: MMType): Bool
+       do
+               if check_expr(n) then return check_conform(n, n.stype, stype) else return false
+       end
 
 
        protected init(tc: ToolContext, module: MMSrcModule)
@@ -395,6 +415,9 @@ end
 redef class AMethPropdef
        # Associated method (MM entity)
        meth method: MMMethSrcMethod is abstract
+
+       # Associated 'self' variable
+       meth self_var: ParamVariable is abstract
 end
 
 redef class ATypePropdef
@@ -434,7 +457,7 @@ end
 
 redef class AType
        attr _stype_cache: MMType
-       attr _stype_cached: Bool
+       attr _stype_cached: Bool = false
 
        redef meth get_local_class(v)
        do
@@ -558,6 +581,11 @@ redef class AForVardeclExpr
        readable writable attr _variable: AutoVariable
 end
 
+redef class ASelfExpr
+       # Associated local variable
+       readable writable attr _variable: ParamVariable 
+end
+
 redef class AVarFormExpr
        # Associated local variable
        readable writable attr _variable: Variable