{-# LANGUAGE CPP #-}
{-# LANGUAGE TemplateHaskell #-}
#if __GLASGOW_HASKELL__ >= 907
{-# LANGUAGE NoFieldSelectors #-}
#endif
-- | A regression test for #T183 which ensures that 'lookupValueNameWithLocals'
-- does not reify a field selector when the @NoFieldSelectors@ language
-- extension is set on GHC 9.8 or later. We define this test in its own module
-- to avoid having to enable @NoFieldSelectors@ in other parts of the test
-- suite.
module T183 (t183) where
import Language.Haskell.TH (Name)
#if __GLASGOW_HASKELL__ >= 907
import Language.Haskell.TH.Desugar
#endif
t183 :: Maybe Name
#if __GLASGOW_HASKELL__ >= 907
-- This should return 'Nothing', as the 'unT' record should not be made into a
-- top-level field selector due to @NoFieldSelectors@.
t183 =
$(do decs <- [d| data T = MkT { unT :: Int } |]
mbName <- withLocalDeclarations decs (lookupValueNameWithLocals "unT")
[| mbName |])
#else
-- Lacking @NoFieldSelectors@ on older versions of GHC, we simply hard-code the
-- result to 'Nothing'.
t183 = Nothing
#endif