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