Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update qualified identifiers in export lists #35

Merged
merged 2 commits into from
Dec 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion imp.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ library
Imp.Extra.HsModule
Imp.Extra.HsParsedModule
Imp.Extra.ImportDecl
Imp.Extra.Located
Imp.Extra.ModuleName
Imp.Extra.ParsedResult
Imp.Extra.ReadP
Expand Down
8 changes: 6 additions & 2 deletions source/library/Imp.hs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import qualified Imp.Extra.Exception as Exception
import qualified Imp.Extra.HsModule as HsModule
import qualified Imp.Extra.HsParsedModule as HsParsedModule
import qualified Imp.Extra.ImportDecl as ImportDecl
import qualified Imp.Extra.Located as Located
import qualified Imp.Extra.ParsedResult as ParsedResult
import qualified Imp.Extra.SrcSpanAnnN as SrcSpanAnnN
import qualified Imp.Type.Config as Config
Expand Down Expand Up @@ -87,9 +86,14 @@ imp arguments this lHsModule = do
Hs.HsModule _ _ _ lImportDecls _ ->
Set.fromList $
fmap (ImportDecl.toModuleName . Plugin.unLoc) lImportDecls
go ::
(Data.Data a) =>
a ->
StateT.State (Map.Map Plugin.ModuleName Hs.SrcSpanAnnN) a
go = overData $ updateQualifiedIdentifiers this implicits imports
(newLHsModule, moduleNames) =
StateT.runState
(Located.overValue (HsModule.overDecls $ overData $ updateQualifiedIdentifiers this implicits imports) lHsModule)
(go lHsModule)
Map.empty
pure $ fmap (HsModule.overImports $ updateImports this aliases packages moduleNames) newLHsModule

Expand Down
7 changes: 0 additions & 7 deletions source/library/Imp/Extra/HsModule.hs
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,6 @@ module Imp.Extra.HsModule where

import qualified GHC.Hs as Hs

overDecls ::
(Functor f) =>
([Hs.LHsDecl Hs.GhcPs] -> f [Hs.LHsDecl Hs.GhcPs]) ->
Hs.HsModule Hs.GhcPs ->
f (Hs.HsModule Hs.GhcPs)
overDecls f x = (\y -> x {Hs.hsmodDecls = y}) <$> f (Hs.hsmodDecls x)

overImports ::
([Hs.LImportDecl Hs.GhcPs] -> [Hs.LImportDecl Hs.GhcPs]) ->
Hs.HsModule Hs.GhcPs ->
Expand Down
6 changes: 0 additions & 6 deletions source/library/Imp/Extra/Located.hs

This file was deleted.

6 changes: 6 additions & 0 deletions source/test-suite/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,12 @@ main = Hspec.hspec . Hspec.parallel . Hspec.describe "Imp" $ do
"version = Data.SemVer.initial"
"import (implicit) qualified \"semver\" Data.SemVer\nversion = Data.SemVer.initial"

Hspec.it "handles exports" $ do
expectImp
[]
"module Example ( Data.Bool.Bool ) where"
"module Example (\n Data.Bool.Bool\n ) where\nimport (implicit) qualified Data.Bool"

expectImp :: (Stack.HasCallStack) => [String] -> String -> String -> Hspec.Expectation
expectImp arguments input expected = do
before <- parseModule input
Expand Down
Loading