Răsfoiți Sursa

Fixed arrays indices not expanding in some cases

Taddeus Kroes 12 ani în urmă
părinte
comite
3dc782a44c
1 a modificat fișierele cu 12 adăugiri și 4 ștergeri
  1. 12 4
      phases/dim_reduce.ml

+ 12 - 4
phases/dim_reduce.ml

@@ -29,12 +29,20 @@ and dim_reduce depth = function
         FunDef (export, ret_type, name, List.map trav params, trav body, ann)
 
     (* 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 *)
-    | 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