git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Don't warn on re-exported modules
commita719aa0655ad603f5b2428fe34cdbb05095c10aa authorNicholas Wolverson <nicholas.wolverson@gmail.com> dateSun 1 Nov 2015, 21:59 (11 years ago) parentdb4168e
1 file changed+8−4
src/Language/PureScript/Linter/Imports.hs+8−4
src/Language/PureScript/Linter/Imports.hs+8−4
@@ -35,9 +35,9 @@ type UsedImports = M.Map ModuleName [Name]
3535-- or references in an explicit import list.
3636--
3737findUnusedImports :: forall m. (Applicative m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => Module -> Env -> UsedImports -> m ()
38−findUnusedImports (Module _ _ _ mdecls _) env usedImps = do
38+findUnusedImports (Module _ _ _ mdecls mexports) env usedImps = do
3939 imps <- findImports mdecls
40− forM_ (M.toAscList imps) $ \(mni, decls) -> unless (mni `elem` autoIncludes) $
40+ forM_ (M.toAscList imps) $ \(mni, decls) -> unless (mni `elem` alwaysUsedModules) $
4141 forM_ decls $ \(ss, declType, qualifierName) -> censor (onErrorMessages $ addModuleLocError ss) $
4242 let usedNames = mapMaybe (matchName (typeForDCtor mni) qualifierName) $ sugarNames mni ++ M.findWithDefault [] mni usedImps in
4343 case declType of
@@ -52,8 +52,12 @@ findUnusedImports (Module _ _ _ mdecls _) env usedImps = do
5252 sugarNames (ModuleName [ProperName n]) | n == C.prelude = [ IdentName $ Qualified Nothing (Ident C.bind) ]
5353 sugarNames _ = []
5454
55− autoIncludes :: [ ModuleName ]
56− autoIncludes = [ ModuleName [ProperName C.prim] ]
55+ -- rely on exports being elaborated by this point
56+ alwaysUsedModules :: [ ModuleName ]
57+ alwaysUsedModules = ModuleName [ProperName C.prim] : maybe [] (mapMaybe isExport) mexports
58+ where
59+ isExport (ModuleRef mn) = Just mn
60+ isExport _ = Nothing
5761
5862 typeForDCtor :: ModuleName -> ProperName -> Maybe ProperName
5963 typeForDCtor mn pn =