on master help sign in
Properly escape module names and F3/A3 functions
19ff114Evan Czaplicki
src/Generate/JavaScript/Expression.hs+4−20
@@ -333,16 +333,8 @@ generateFunction args body =
333{-# NOINLINE funcHelpers #-}
333{-# NOINLINE funcHelpers #-}
334funcHelpers :: IntMap.IntMap JS.Expr
334funcHelpers :: IntMap.IntMap JS.Expr
335funcHelpers =
335funcHelpers =
336− IntMap.fromList
336+ IntMap.fromList $
337− [ (2, JS.Ref (Name.fromLocal "F2"))
337+ map (\n -> (n, JS.Ref (Name.makeF n))) [2..9]
338− , (3, JS.Ref (Name.fromLocal "F3"))
339− , (4, JS.Ref (Name.fromLocal "F4"))
340− , (5, JS.Ref (Name.fromLocal "F5"))
341− , (6, JS.Ref (Name.fromLocal "F6"))
342− , (7, JS.Ref (Name.fromLocal "F7"))
343− , (8, JS.Ref (Name.fromLocal "F8"))
344− , (9, JS.Ref (Name.fromLocal "F9"))
345− ]
346
338
347
339
348
340
@@ -397,16 +389,8 @@ generateNormalCall func args =
397{-# NOINLINE callHelpers #-}
389{-# NOINLINE callHelpers #-}
398callHelpers :: IntMap.IntMap JS.Expr
390callHelpers :: IntMap.IntMap JS.Expr
399callHelpers =
391callHelpers =
400− IntMap.fromList
392+ IntMap.fromList $
401− [ (2, JS.Ref (Name.fromLocal "A2"))
393+ map (\n -> (n, JS.Ref (Name.makeA n))) [2..9]
402− , (3, JS.Ref (Name.fromLocal "A3"))
403− , (4, JS.Ref (Name.fromLocal "A4"))
404− , (5, JS.Ref (Name.fromLocal "A5"))
405− , (6, JS.Ref (Name.fromLocal "A6"))
406− , (7, JS.Ref (Name.fromLocal "A7"))
407− , (8, JS.Ref (Name.fromLocal "A8"))
408− , (9, JS.Ref (Name.fromLocal "A9"))
409− ]
410
394
411
395
412
396
src/Generate/JavaScript/Name.hs+13−1
@@ -13,6 +13,8 @@ module Generate.JavaScript.Name
13 , fromCycle
13 , fromCycle
14 , fromKernel
14 , fromKernel
15 , fromField
15 , fromField
16+ , makeF
17+ , makeA
16 , makeLabel
18 , makeLabel
17 , makeTemp
19 , makeTemp
18 , dollar
20 , dollar
@@ -101,7 +103,7 @@ fromGlobal (ModuleName.Canonical (Pkg.Name user project) home) name =
101 Name $
103 Name $
102 Text.encodeUtf8Builder (Text.replace "-" "_" user)
104 Text.encodeUtf8Builder (Text.replace "-" "_" user)
103 <> "$" <> Text.encodeUtf8Builder (Text.replace "-" "_" project) -- TODO store this in a better way
105 <> "$" <> Text.encodeUtf8Builder (Text.replace "-" "_" project) -- TODO store this in a better way
104− <> "$" <> N.toBuilder home
106+ <> "$" <> N.toBuilder (Text.replace "." "$" home)
105 <> "$" <> N.toBuilder name
107 <> "$" <> N.toBuilder name
106
108
107
109
@@ -133,6 +135,16 @@ fromField mode name =
133-- TEMPORARY NAMES
135-- TEMPORARY NAMES
134
136
135
137
138+makeF :: Int -> Name
139+makeF n =
140+ Name ("F" <> B.intDec n)
141+
142+
143+makeA :: Int -> Name
144+makeA n =
145+ Name ("A" <> B.intDec n)
146+
147+
136makeLabel :: N.Name -> Int -> Name
148makeLabel :: N.Name -> Int -> Name
137makeLabel name index =
149makeLabel name index =
138 Name (N.toBuilder name <> "$" <> B.intDec index)
150 Name (N.toBuilder name <> "$" <> B.intDec index)