|
@@ -190,6 +190,11 @@ let rec typecheck node =
|
|
|
check_dims_match dims (typeof dec) node;
|
|
check_dims_match dims (typeof dec) node;
|
|
|
VarUse (dec, Some dims, Type (basetypeof dec) :: ann)
|
|
VarUse (dec, Some dims, Type (basetypeof dec) :: ann)
|
|
|
|
|
|
|
|
|
|
+ (* Array pointers cannot be re-assigned, because array dimension reduction
|
|
|
|
|
+ * makes assumptions about dimensions of an array *)
|
|
|
|
|
+ | VarLet (dec, None, _, _) when is_array dec ->
|
|
|
|
|
+ raise (NodeError (node, "cannot re-assign array pointer"))
|
|
|
|
|
+
|
|
|
(* Assigned values must match variable declaration *)
|
|
(* Assigned values must match variable declaration *)
|
|
|
| VarLet (dec, None, value, ann) ->
|
|
| VarLet (dec, None, value, ann) ->
|
|
|
VarLet (dec, None, check_trav (typeof dec) value, ann)
|
|
VarLet (dec, None, check_trav (typeof dec) value, ann)
|