packages feed

HaRe-0.8.3.0: test/GhcUtilsSpec.hs

{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE CPP #-}
module GhcUtilsSpec (main, spec) where

import           Test.Hspec

-- import           TestUtils

-- import qualified GHC     as GHC

-- import qualified Data.Generics as SYB
-- import qualified GHC.SYB.Utils as SYB

-- import Language.Haskell.GHC.ExactPrint.Utils

-- import Language.Haskell.Refact.Utils.Binds
-- import Language.Haskell.Refact.Utils.GhcUtils
-- import Language.Haskell.Refact.Utils.GhcVersionSpecific
-- import Language.Haskell.Refact.Utils.Monad
-- import Language.Haskell.Refact.Utils.MonadFunctions
-- import Language.Haskell.Refact.Utils.TypeUtils
-- import Language.Haskell.Refact.Utils.Utils
-- import Language.Haskell.Refact.Utils.Variables

-- import TestUtils

-- ---------------------------------------------------------------------

main :: IO ()
main = do
  hspec spec

spec :: Spec
spec = do
  describe "nothing happening here" $ do
    it "need to delete this" $ do
      "a" `shouldBe` "a"
  {-
  describe "onelayerStaged" $ do
    it "only descends one layer into a structure" $ do
      let s' = (2,[3,4],5) :: (Int,[Int],Int)
      let
          worker' (i::Int) = [i]

      let g = onelayerStaged SYB.Renamer [] ([] `SYB.mkQ` worker') s'
      let g1 = SYB.gmapQ ([] `SYB.mkQ` worker') s'
      let g2 = SYB.gmapQl (++) [] ([] `SYB.mkQ` worker') s'

      (show g) `shouldBe` "[[2],[],[5]]"
      (show g1) `shouldBe` "[[2],[],[5]]"
      (show g2) `shouldBe` "[2,5]"

    -- ---------------------------------

    it "Finds a GHC.Name at top level only" $ do
      let
        comp = do
         parseSourceFileGhc "./DupDef/Dd1.hs"
         renamed <- getRefactRenamed
         parsed <- getRefactParsed
         nm <- getRefactNameMap

         let mn = locToRdrName (4,1) parsed
         let Just (ln'@(GHC.L l _)) = mn
             n = rdrName2NamePure nm ln'
             ln = GHC.L l n

         let mx = locToRdrName (4,10) parsed
         let (Just (lx'@(GHC.L l2 _))) = mx
             x = rdrName2NamePure nm lx'
             lx = GHC.L l2 x

         let declsr = hsBinds renamed
             duplicatedDecls = definingDeclsNames [n] declsr True False

             res = findEntity ln duplicatedDecls
             res2 = findEntity n duplicatedDecls

             resx = findEntity lx duplicatedDecls
             resx2 = findEntity x duplicatedDecls


             worker (nn::GHC.Name) = [showGhc nn]
             g = onelayerStaged SYB.Renamer ["-1"] (["-10"] `SYB.mkQ` worker) duplicatedDecls

#if __GLASGOW_HASKELL__ <= 710
             worker2 ((GHC.L _ (GHC.FunBind (GHC.L _ n') _ _ _ _ _))::GHC.Located (GHC.HsBind GHC.Name))
#else
             worker2 ((GHC.L _ (GHC.FunBind (GHC.L _ n') _ _ _ _))::GHC.Located (GHC.HsBind GHC.Name))
#endif
               | n == n' = ["found"]
             worker2 _ = []
             g2 = onelayerStaged SYB.Renamer ["-1"] (["-10"] `SYB.mkQ` worker2) duplicatedDecls

         return (res,res2,resx,resx2,duplicatedDecls,g,g2,ln,lx)
      ((r,r2,rx,rx2,d,gg,gg2,_l,_x),_s) <- ct $ runRefactGhc comp initialState testOptions
      -- (SYB.showData SYB.Renamer 0 d) `shouldBe` ""

      (showGhcQual d) `shouldBe` "[DupDef.Dd1.toplevel x = DupDef.Dd1.c GHC.Num.* x]"
      (showGhcQual _l) `shouldBe` "DupDef.Dd1.toplevel"
      (showGhc _x) `shouldBe` "x"
      (show gg) `shouldBe` "[[\"-10\"],[\"-10\"]]"
      (show gg2) `shouldBe` "[[\"found\"],[\"-10\"]]"
      r `shouldBe` True
      r2 `shouldBe` True
      rx `shouldBe` False
      rx2 `shouldBe` True
-}

-- ---------------------------------------------------------------------