diff --git a/henforcer.cabal b/henforcer.cabal index d93bc97..b248072 100644 --- a/henforcer.cabal +++ b/henforcer.cabal @@ -1,7 +1,7 @@ cabal-version: 3.4 name: henforcer -version: 1.0.0.1 +version: 1.0.0.2 synopsis: GHC plugin to enforce user specified rules on code. description: Please see the README on GitHub at category: Development, Compiler Plugin, static-analysis diff --git a/src/CompatGHC.hs b/src/CompatGHC.hs index 34b8975..b9a5457 100644 --- a/src/CompatGHC.hs +++ b/src/CompatGHC.hs @@ -29,6 +29,7 @@ module CompatGHC , SrcSpan , generatedSrcSpan , getLoc + , isGoodSrcSpan , ideclAs , ideclName , ideclPkgQual @@ -110,6 +111,7 @@ import GHC , ideclPkgQual , ideclQualified , ideclSafe + , isGoodSrcSpan , locA , mkModuleName , moduleName diff --git a/src/Henforcer/CodeStructure/Import/Import.hs b/src/Henforcer/CodeStructure/Import/Import.hs index a5907b7..26fdbee 100644 --- a/src/Henforcer/CodeStructure/Import/Import.hs +++ b/src/Henforcer/CodeStructure/Import/Import.hs @@ -13,6 +13,8 @@ module Henforcer.CodeStructure.Import.Import , importIsOpenWithNoHidingOrAlias ) where +import qualified Data.Maybe as Maybe + import qualified CompatGHC import Henforcer.CodeStructure.Import.Scheme (Alias (WithoutAlias), Scheme (Scheme), buildScheme) @@ -48,7 +50,14 @@ getImports tcGblEnv = let name = CompatGHC.moduleName $ CompatGHC.tcg_mod tcGblEnv in - fmap (Import name) $ CompatGHC.tcg_rn_imports tcGblEnv + Maybe.mapMaybe + ( \imp -> + -- Remove synthetic imports, e.g. transitively imported Backpack signatures + if CompatGHC.isGoodSrcSpan . CompatGHC.locA $ CompatGHC.getLoc imp + then Just (Import name imp) + else Nothing + ) + (CompatGHC.tcg_rn_imports tcGblEnv) {- | Determine if the import is open, with no qualification, no alias, and no hiding