@@ -109,6 +109,8 @@ compileJS (JSOp op lhs rhs) =
109109compileJS (JSProj obj field)
110110 | JSFunction {} <- obj =
111111 concat ["(", compileJS obj, ").", field]
112+ | JSAssign {} <- obj =
113+ concat ["(", compileJS obj, ").", field]
112114 | otherwise =
113115 compileJS obj ++ '.' : field
114116
@@ -244,6 +246,12 @@ optimizeJS (JSApp (JSFunction [arg] (JSReturn ret)) [val])
244246 JSOp op (head $ jsSubst arg [lhs] (optimizeJS val)) $
245247 (head $ jsSubst arg [rhs] (optimizeJS val))
246248
249+ | JSIndex (JSProj obj field) idx <- ret =
250+ JSIndex (JSProj (
251+ head $ jsSubst arg [obj] (optimizeJS val)
252+ ) field
253+ ) (head $ jsSubst arg [idx] (optimizeJS val))
254+
247255optimizeJS (JSSeq seq) =
248256 JSSeq (map optimizeJS seq)
249257