@@ -46,8 +46,6 @@ import Language.PureScript.Names
4646import Language.PureScript.CodeGen.JS.AST
4747import Language.PureScript.Options
4848import Language.PureScript.CodeGen.Common (identToJs )
49- import Language.PureScript.Types
50- import Language.PureScript.Prim
5149
5250-- |
5351-- Apply a series of optimizer passes to simplified Javascript code
@@ -311,9 +309,6 @@ magicDo' = everywhere (mkT undo) . everywhere' (mkT convert)
311309 -- Check if an expression represents a function in the Ef module
312310 isEffFunc name (JSAccessor name' (JSAccessor " Control_Monad_Eff" (JSVar " _ps" ))) | name == name' = True
313311 isEffFunc _ _ = False
314- -- Module names
315- prelude = ModuleName [ProperName " Prelude" ]
316- effModule = ModuleName [ProperName " Control" , ProperName " Monad" , ProperName " Eff" ]
317312 -- The name of the type class dictionary for the Monad Eff instance
318313 effDictName = " monadEff"
319314 -- Check if an expression represents the Monad Eff dictionary
@@ -402,62 +397,62 @@ inlineOperator op f = everywhere (mkT convert)
402397
403398inlineCommonOperators :: JS -> JS
404399inlineCommonOperators = applyAll
405- [ binary " numNumber" " +" " Num " tyNumber Add
406- , binary " numNumber" " -" " Num " tyNumber Subtract
407- , binary " numNumber" " *" " Num " tyNumber Multiply
408- , binary " numNumber" " /" " Num " tyNumber Divide
409- , binary " numNumber" " %" " Num " tyNumber Modulus
410- , unary " numNumber" " negate" " Num " tyNumber Negate
400+ [ binary " numNumber" " +" Add
401+ , binary " numNumber" " -" Subtract
402+ , binary " numNumber" " *" Multiply
403+ , binary " numNumber" " /" Divide
404+ , binary " numNumber" " %" Modulus
405+ , unary " numNumber" " negate" Negate
411406
412- , binary " ordNumber" " <" " Ord " tyNumber LessThan
413- , binary " ordNumber" " >" " Ord " tyNumber GreaterThan
414- , binary " ordNumber" " <=" " Ord " tyNumber LessThanOrEqualTo
415- , binary " ordNumber" " >=" " Ord " tyNumber GreaterThanOrEqualTo
407+ , binary " ordNumber" " <" LessThan
408+ , binary " ordNumber" " >" GreaterThan
409+ , binary " ordNumber" " <=" LessThanOrEqualTo
410+ , binary " ordNumber" " >=" GreaterThanOrEqualTo
416411
417- , binary " eqNumber" " ==" " Eq " tyNumber EqualTo
418- , binary " eqNumber" " /=" " Eq " tyNumber NotEqualTo
419- , binary " eqString" " ==" " Eq " tyString EqualTo
420- , binary " eqString" " /=" " Eq " tyString NotEqualTo
421- , binary " eqBoolean" " ==" " Eq " tyBoolean EqualTo
422- , binary " eqBoolean" " /=" " Eq " tyBoolean NotEqualTo
412+ , binary " eqNumber" " ==" EqualTo
413+ , binary " eqNumber" " /=" NotEqualTo
414+ , binary " eqString" " ==" EqualTo
415+ , binary " eqString" " /=" NotEqualTo
416+ , binary " eqBoolean" " ==" EqualTo
417+ , binary " eqBoolean" " /=" NotEqualTo
423418
424- , binaryFunction " bitsNumber" " shl" " Bits " tyNumber ShiftLeft
425- , binaryFunction " bitsNumber" " shr" " Bits " tyNumber ShiftRight
426- , binaryFunction " bitsNumber" " zshr" " Bits " tyNumber ZeroFillShiftRight
427- , binary " bitsNumber" " &" " Bits " tyNumber BitwiseAnd
428- , binary " bitsNumber" " |" " Bits " tyNumber BitwiseOr
429- , binary " bitsNumber" " ^" " Bits " tyNumber BitwiseXor
430- , unary " bitsNumber" " complement" " Bits " tyNumber BitwiseNot
419+ , binaryFunction " bitsNumber" " shl" ShiftLeft
420+ , binaryFunction " bitsNumber" " shr" ShiftRight
421+ , binaryFunction " bitsNumber" " zshr" ZeroFillShiftRight
422+ , binary " bitsNumber" " &" BitwiseAnd
423+ , binary " bitsNumber" " |" BitwiseOr
424+ , binary " bitsNumber" " ^" BitwiseXor
425+ , unary " bitsNumber" " complement" BitwiseNot
431426
432- , binary " boolLikeBoolean" " &&" " BoolLike " tyBoolean And
433- , binary " boolLikeBoolean" " ||" " BoolLike " tyBoolean Or
434- , unary " boolLikeBoolean" " not" " BoolLike " tyBoolean Not
427+ , binary " boolLikeBoolean" " &&" And
428+ , binary " boolLikeBoolean" " ||" Or
429+ , unary " boolLikeBoolean" " not" Not
435430 ]
436431 where
437- binary :: String -> String -> String -> Type -> BinaryOperator -> JS -> JS
438- binary dictName opString className classTy op = everywhere (mkT convert)
432+ binary :: String -> String -> BinaryOperator -> JS -> JS
433+ binary dictName opString op = everywhere (mkT convert)
439434 where
440435 convert :: JS -> JS
441- convert (JSApp (JSApp (JSApp fn [dict]) [x]) [y]) | isOp fn && isOpDict dictName className classTy dict = JSBinary op x y
436+ convert (JSApp (JSApp (JSApp fn [dict]) [x]) [y]) | isOp fn && isOpDict dictName dict = JSBinary op x y
442437 convert other = other
443438 isOp (JSAccessor longForm (JSAccessor " Prelude" (JSVar _))) | longForm == identToJs (Op opString) = True
444439 isOp (JSIndexer (JSStringLiteral op') (JSAccessor " Prelude" (JSVar " _ps" ))) | opString == op' = True
445440 isOp _ = False
446- binaryFunction :: String -> String -> String -> Type -> BinaryOperator -> JS -> JS
447- binaryFunction dictName fnName className classTy op = everywhere (mkT convert)
441+ binaryFunction :: String -> String -> BinaryOperator -> JS -> JS
442+ binaryFunction dictName fnName op = everywhere (mkT convert)
448443 where
449444 convert :: JS -> JS
450- convert (JSApp (JSApp (JSApp fn [dict]) [x]) [y]) | isOp fn && isOpDict dictName className classTy dict = JSBinary op x y
445+ convert (JSApp (JSApp (JSApp fn [dict]) [x]) [y]) | isOp fn && isOpDict dictName dict = JSBinary op x y
451446 convert other = other
452447 isOp (JSAccessor fnName' (JSAccessor " Prelude" (JSVar " _ps" ))) | fnName == fnName' = True
453448 isOp _ = False
454- unary :: String -> String -> String -> Type -> UnaryOperator -> JS -> JS
455- unary dictName fnName className classTy op = everywhere (mkT convert)
449+ unary :: String -> String -> UnaryOperator -> JS -> JS
450+ unary dictName fnName op = everywhere (mkT convert)
456451 where
457452 convert :: JS -> JS
458- convert (JSApp (JSApp fn [dict]) [x]) | isOp fn && isOpDict dictName className classTy dict = JSUnary op x
453+ convert (JSApp (JSApp fn [dict]) [x]) | isOp fn && isOpDict dictName dict = JSUnary op x
459454 convert other = other
460455 isOp (JSAccessor fnName' (JSAccessor " Prelude" (JSVar " _ps" ))) | fnName' == fnName = True
461456 isOp _ = False
462- isOpDict dictName className ty (JSApp (JSAccessor prop (JSAccessor " Prelude" (JSVar " _ps" ))) [JSObjectLiteral [] ]) | prop == dictName = True
463- isOpDict _ _ _ _ = False
457+ isOpDict dictName (JSApp (JSAccessor prop (JSAccessor " Prelude" (JSVar " _ps" ))) [JSObjectLiteral [] ]) | prop == dictName = True
458+ isOpDict _ _ = False
0 commit comments