on master help sign in
Fix substitutions for ExplicitList.
commitd700acfeac04a4185f2acc9c82fed4f5be524ec0 authorEvan Czaplicki <evan@Evans-MacBook-Air.local> dateMon 1 Jul 2013, 20:00 (13 years ago) parent25671f5
1 file changed+10−7
compiler/Transform/Substitute.hs+10−7
compiler/Transform/Substitute.hs+10−7
@@ -1,3 +1,4 @@
1+{-# OPTIONS_GHC -Wall #-}
12module Transform.Substitute (subst) where
23
34import SourceSyntax.Expression
@@ -9,20 +10,22 @@ subst old new expr =
910 let f (L t s e) = L t s (subst old new e) in
1011 case expr of
1112 Range e1 e2 -> Range (f e1) (f e2)
12− Access e x -> Access (f e) x
13− Remove e x -> Remove (f e) x
14− Insert e x v -> Insert (f e) x (f v)
15− Modify r fs -> Modify (f r) (map (second f) fs)
16− Record fs -> Record (map (\(lbl,as,e) -> (lbl,as,f e)) fs)
13+ ExplicitList es -> ExplicitList (map f es)
1714 Binop op e1 e2 -> Binop op (f e1) (f e2)
1815 Lambda x e -> if x == old then expr else Lambda x (f e)
1916 App e1 e2 -> App (f e1) (f e2)
2017 MultiIf ps -> MultiIf (map (f *** f) ps)
21− Let defs e -> Let (map substDef defs) (f e)
18+ Let defs body -> Let (map substDef defs) (f body)
2219 where substDef (FnDef name vs e) = FnDef name vs (f e)
2320 substDef (OpDef op a1 a2 e) = OpDef op a1 a2 (f e)
2421 substDef x = x
2522 Var x -> if x == old then new else expr
2623 Case e cases -> Case (f e) $ map (second f) cases
2724 Data name es -> Data name (map f es)
28− _ -> expr
25+ Access e x -> Access (f e) x
26+ Remove e x -> Remove (f e) x
27+ Insert e x v -> Insert (f e) x (f v)
28+ Modify r fs -> Modify (f r) (map (second f) fs)
29+ Record fs -> Record (map (\(lbl,as,e) -> (lbl,as,f e)) fs)
30+ Literal _ -> expr
31+ Markdown _ -> expr