@@ -36,7 +36,7 @@ printJSString x = concat . reverse . pwOutput $ execPrinter (printJS x) defaultP
3636
3737-- | Print the JS to a pretty string.
3838printJSPretty :: Printable a => a -> String
39- printJSPretty x = concat . reverse . pwOutput $ execPrinter (printJS x) defaultPrintReader { prPretty = True }
39+ printJSPretty x = concat . reverse . pwOutput $ execPrinter (printJS x) defaultPrintReader{ prPretty = True }
4040
4141-- | Print literals. These need some special encoding for
4242-- JS-format literals. Could use the Text.JSON library.
@@ -218,15 +218,17 @@ instance Printable JsName where
218218 case name of
219219 JsNameVar qname -> printJS qname
220220 JsThis -> write " this"
221- JsThunk -> write " Fay$$$"
222- JsForce -> write " Fay$$_"
223- JsApply -> write " Fay$$__"
221+ JsThunk -> writeThunkish " Fay$$$ " " $"
222+ JsForce -> writeThunkish " Fay$$_ " " _"
223+ JsApply -> writeThunkish " Fay$$__ " " __"
224224 JsParam i -> write (" $p" ++ show i)
225225 JsTmp i -> write (" $tmp" ++ show i)
226226 JsConstructor qname -> printCons qname
227227 JsBuiltIn qname -> " Fay$$" +> printJS qname
228228 JsParametrizedType -> write " type"
229229 JsModuleName (ModuleName _ m) -> write m
230+ where writeThunkish ugly pretty = askP $ \ pr ->
231+ write $ if prPrettyThunks pr then pretty else ugly
230232
231233-- | Print a constructor name given a QName.
232234printCons :: N. QName -> Printer
0 commit comments