|
@@ -29,12 +29,20 @@ and dim_reduce depth = function
|
|
|
FunDef (export, ret_type, name, List.map trav params, trav body, ann)
|
|
FunDef (export, ret_type, name, List.map trav params, trav body, ann)
|
|
|
|
|
|
|
|
(* Expand indices when dereferencing *)
|
|
(* Expand indices when dereferencing *)
|
|
|
- | VarUse (VarDec (Array (_, dims), _, _, _) as dec, Some values, ann) ->
|
|
|
|
|
- VarUse (dec, Some [expand depth (List.rev dims) values], ann)
|
|
|
|
|
|
|
+ | VarUse (dec, Some values, ann) as node ->
|
|
|
|
|
+ (match typeof dec with
|
|
|
|
|
+ | Array (_, dims) ->
|
|
|
|
|
+ VarUse (dec, Some [expand depth (List.rev dims) values], ann)
|
|
|
|
|
+ | _ -> node
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
(* Expand indices when assigning to array index *)
|
|
(* Expand indices when assigning to array index *)
|
|
|
- | VarLet (VarDec (Array (_, dims), _, _, _) as dec, Some values, value, ann) ->
|
|
|
|
|
- VarLet (dec, Some [expand depth (List.rev dims) values], value, ann)
|
|
|
|
|
|
|
+ | VarLet (dec, Some values, value, ann) as node ->
|
|
|
|
|
+ (match typeof dec with
|
|
|
|
|
+ | Array (_, dims) ->
|
|
|
|
|
+ VarLet (dec, Some [expand depth (List.rev dims) values], value, ann)
|
|
|
|
|
+ | _ -> node
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
| node -> transform_children (dim_reduce depth) node
|
|
| node -> transform_children (dim_reduce depth) node
|
|
|
|
|
|