git.iko.soy/rowtype-yoga/purescript-backend-optimizer
on main help sign in
rowtype-yoga/purescript-backend-optimizer/backend-es/test-snapshots/src/Snapshot.InlineReferencePrimOpNumber.purs
51 lines 1.1 kB history raw
1-- @inline export fn never
2-- @inline export localTest always
3-- @inline export externTest always
4module Snapshot.InlineReferencePrimOpNumber where
6import Prelude
8fn :: forall r. r -> Number
9fn _ = 0.0
11type Rec = { a :: { b :: { c :: Number } }, d :: Number, e :: Number }
13localTest :: (Rec -> Number) -> Number
14localTest f = do
15 let rec = { a: { b: { c: 99.0 }}, d: fn {}, e: 11.0 }
16 let res = f rec
17 if res /= bottom then res
18 else fn rec
20test1 :: Number
21test1 = localTest \rec -> rec.a.b.c + rec.e
23test2 :: Number
24test2 = localTest \rec -> rec.a.b.c - rec.e
26test3 :: Number
27test3 = localTest \rec -> rec.a.b.c * rec.e
29test4 :: Number
30test4 = localTest \rec -> rec.a.b.c / rec.e
32extern :: Rec
33extern = { a: { b: { c: 99.0 }}, d: fn {}, e: 11.0 }
35externTest :: (Rec -> Number) -> Number
36externTest f = do
37 let res = f extern
38 if res /= bottom then res
39 else bottom
41test5 :: Number
42test5 = externTest \rec -> rec.a.b.c + rec.e
44test6 :: Number
45test6 = externTest \rec -> rec.a.b.c - rec.e
47test7 :: Number
48test7 = externTest \rec -> rec.a.b.c * rec.e
50test8 :: Number
51test8 = externTest \rec -> rec.a.b.c / rec.e