on master help sign in
Properly escape module names and F3/A3 functions
commit19ff11454a937aec9dbd92fa607748fddc2807a6 authorEvan Czaplicki <evancz@users.noreply.github.com> dateThu 25 Jan 2018, 22:14 (9 years ago) parenteaa646f
2 files changed+17−21
src/Generate/JavaScript/Expression.hs+4−20 src/Generate/JavaScript/Name.hs+13−1
src/Generate/JavaScript/Expression.hs+4−20
@@ -333,16 +333,8 @@ generateFunction args body =
333333{-# NOINLINE funcHelpers #-}
334334funcHelpers :: IntMap.IntMap JS.Expr
335335funcHelpers =
336− IntMap.fromList
337− [ (2, JS.Ref (Name.fromLocal "F2"))
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− ]
336+ IntMap.fromList $
337+ map (\n -> (n, JS.Ref (Name.makeF n))) [2..9]
346338
347339
348340
@@ -397,16 +389,8 @@ generateNormalCall func args =
397389{-# NOINLINE callHelpers #-}
398390callHelpers :: IntMap.IntMap JS.Expr
399391callHelpers =
400− IntMap.fromList
401− [ (2, JS.Ref (Name.fromLocal "A2"))
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− ]
392+ IntMap.fromList $
393+ map (\n -> (n, JS.Ref (Name.makeA n))) [2..9]
410394
411395
412396
src/Generate/JavaScript/Name.hs+13−1
@@ -13,6 +13,8 @@ module Generate.JavaScript.Name
1313 , fromCycle
1414 , fromKernel
1515 , fromField
16+ , makeF
17+ , makeA
1618 , makeLabel
1719 , makeTemp
1820 , dollar
@@ -101,7 +103,7 @@ fromGlobal (ModuleName.Canonical (Pkg.Name user project) home) name =
101103 Name $
102104 Text.encodeUtf8Builder (Text.replace "-" "_" user)
103105 <> "$" <> Text.encodeUtf8Builder (Text.replace "-" "_" project) -- TODO store this in a better way
104− <> "$" <> N.toBuilder home
106+ <> "$" <> N.toBuilder (Text.replace "." "$" home)
105107 <> "$" <> N.toBuilder name
106108
107109
@@ -133,6 +135,16 @@ fromField mode name =
133135-- TEMPORARY NAMES
134136
135137
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+
136148makeLabel :: N.Name -> Int -> Name
137149makeLabel name index =
138150 Name (N.toBuilder name <> "$" <> B.intDec index)