module Tests.Language.Haskell.TH.Lock.State where import Data.IORef import Language.Haskell.TH import Language.Haskell.TH.Syntax import System.IO.Unsafe state :: IORef String state = unsafePerformIO (newIORef "") set :: String -> Q [Dec] set s = runIO (atomicWriteIORef state s) >> pure [] get :: Q Exp get = lift =<< runIO (readIORef state)