polysemy-plugin 0.2.5.1 → 0.2.5.2
raw patch · 4 files changed
+94/−176 lines, 4 filesdep ~polysemynew-uploaderPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: polysemy
API changes (from Hackage documentation)
- Polysemy.Plugin.Phases: extraPhases :: DynFlags -> [CoreToDo]
- Polysemy.Plugin.Fundep.Stuff: PolysemyStuff :: ThingOf l Class -> ThingOf l TyCon -> ThingOf l TyCon -> ThingOf l TyCon -> PolysemyStuff
+ Polysemy.Plugin.Fundep.Stuff: PolysemyStuff :: ThingOf l Class -> ThingOf l TyCon -> ThingOf l TyCon -> ThingOf l TyCon -> PolysemyStuff (l :: LookupState)
- Polysemy.Plugin.Fundep.Stuff: [findClass] :: PolysemyStuff -> ThingOf l Class
+ Polysemy.Plugin.Fundep.Stuff: [findClass] :: PolysemyStuff (l :: LookupState) -> ThingOf l Class
- Polysemy.Plugin.Fundep.Stuff: [ifStuckTyCon] :: PolysemyStuff -> ThingOf l TyCon
+ Polysemy.Plugin.Fundep.Stuff: [ifStuckTyCon] :: PolysemyStuff (l :: LookupState) -> ThingOf l TyCon
- Polysemy.Plugin.Fundep.Stuff: [locateEffectTyCon] :: PolysemyStuff -> ThingOf l TyCon
+ Polysemy.Plugin.Fundep.Stuff: [locateEffectTyCon] :: PolysemyStuff (l :: LookupState) -> ThingOf l TyCon
- Polysemy.Plugin.Fundep.Stuff: [semTyCon] :: PolysemyStuff -> ThingOf l TyCon
+ Polysemy.Plugin.Fundep.Stuff: [semTyCon] :: PolysemyStuff (l :: LookupState) -> ThingOf l TyCon
- Polysemy.Plugin.Fundep.Stuff: polysemyStuff :: TcPluginM (PolysemyStuff 'Things)
+ Polysemy.Plugin.Fundep.Stuff: polysemyStuff :: TcPluginM (PolysemyStuff 'Things)
Files
- ChangeLog.md +4/−0
- polysemy-plugin.cabal +90/−84
- src/Polysemy/Plugin.hs +0/−29
- src/Polysemy/Plugin/Phases.hs +0/−63
ChangeLog.md view
@@ -1,5 +1,9 @@ # Changelog for polysemy-plugin +## 0.2.5.2 (2020-11-01)++- Fixed crashes stemming from unused optimization passes+ ([#382](https://github.com/polysemy-research/polysemy/pull/382)) ## 0.2.5.1 (2020-09-15)
polysemy-plugin.cabal view
@@ -1,98 +1,104 @@-cabal-version: 1.24---- This file has been generated from package.yaml by hpack version 0.33.0.------ see: https://github.com/sol/hpack------ hash: 0f4635d86ee9b6424b575257afd4fc1a42b0ddbbf2270bdcb1a71b8e54f0226d+cabal-version: 2.0+name: polysemy-plugin+version: 0.2.5.2+license: BSD3+license-file: LICENSE+copyright: 2019 Sandy Maguire+maintainer: sandy@sandymaguire.me+author: Sandy Maguire+homepage: https://github.com/isovector/polysemy#readme+bug-reports: https://github.com/isovector/polysemy/issues+synopsis: Disambiguate obvious uses of effects.+description:+ Please see the README on GitHub at <https://github.com/isovector/polysemy/tree/master/polysemy-plugin#readme> -name: polysemy-plugin-version: 0.2.5.1-synopsis: Disambiguate obvious uses of effects.-description: Please see the README on GitHub at <https://github.com/isovector/polysemy/tree/master/polysemy-plugin#readme>-category: Polysemy-homepage: https://github.com/isovector/polysemy#readme-bug-reports: https://github.com/isovector/polysemy/issues-author: Sandy Maguire-maintainer: sandy@sandymaguire.me-copyright: 2019 Sandy Maguire-license: BSD3-license-file: LICENSE-build-type: Custom+category: Polysemy+build-type: Custom extra-source-files: README.md ChangeLog.md source-repository head- type: git- location: https://github.com/isovector/polysemy+ type: git+ location: https://github.com/isovector/polysemy custom-setup- setup-depends:- Cabal- , base >=4.9 && <5- , cabal-doctest >=1.0.6 && <1.1+ setup-depends:+ Cabal >=3.0.1.0 && <3.1,+ base >=4.9 && <5,+ cabal-doctest >=1.0.6 && <1.1 flag corelint- description: Perform the corelint tests- manual: True- default: False+ description: Perform the corelint tests+ default: False+ manual: True library- exposed-modules:- Polysemy.Plugin- Polysemy.Plugin.Fundep- Polysemy.Plugin.Fundep.Stuff- Polysemy.Plugin.Fundep.Unification- Polysemy.Plugin.Fundep.Utils- Polysemy.Plugin.Phases- other-modules:- Paths_polysemy_plugin- hs-source-dirs:- src- default-extensions: DataKinds DeriveFunctor FlexibleContexts GADTs LambdaCase PolyKinds RankNTypes ScopedTypeVariables StandaloneDeriving TypeApplications TypeOperators TypeFamilies UnicodeSyntax- build-depends:- base >=4.9 && <5- , containers >=0.5 && <0.7- , ghc >=8.4.4 && <9- , ghc-tcplugins-extra >=0.3 && <0.5- , polysemy >=1.3- , syb >=0.7 && <0.8- , transformers >=0.5.2.0 && <0.6- default-language: Haskell2010+ exposed-modules:+ Polysemy.Plugin+ Polysemy.Plugin.Fundep+ Polysemy.Plugin.Fundep.Stuff+ Polysemy.Plugin.Fundep.Unification+ Polysemy.Plugin.Fundep.Utils + hs-source-dirs: src+ other-modules: Paths_polysemy_plugin+ autogen-modules: Paths_polysemy_plugin+ default-language: Haskell2010+ default-extensions:+ DataKinds DeriveFunctor FlexibleContexts GADTs LambdaCase PolyKinds+ RankNTypes ScopedTypeVariables StandaloneDeriving TypeApplications+ TypeOperators TypeFamilies UnicodeSyntax++ build-depends:+ base >=4.9 && <5,+ containers >=0.5 && <0.7,+ ghc >=8.4.4 && <9,+ ghc-tcplugins-extra >=0.3 && <0.5,+ polysemy >=1.3 && <1.5,+ syb ==0.7.*,+ transformers >=0.5.2.0 && <0.6+ test-suite polysemy-plugin-test- type: exitcode-stdio-1.0- main-is: Main.hs- other-modules:- BadSpec- DoctestSpec- ExampleSpec- LegitimateTypeErrorSpec- MultipleVarsSpec- PluginSpec- TypeErrors- VDQSpec- Paths_polysemy_plugin- hs-source-dirs:- test- default-extensions: DataKinds DeriveFunctor FlexibleContexts GADTs LambdaCase PolyKinds RankNTypes ScopedTypeVariables StandaloneDeriving TypeApplications TypeOperators TypeFamilies UnicodeSyntax- ghc-options: -threaded -rtsopts -with-rtsopts=-N -fplugin=Polysemy.Plugin- build-tool-depends:- hspec-discover:hspec-discover- build-depends:- base >=4.9 && <5- , containers >=0.5 && <0.7- , doctest >=0.16.0.1 && <0.17- , ghc >=8.4.4 && <9- , ghc-tcplugins-extra >=0.3 && <0.5- , hspec >=2.6.0 && <3- , inspection-testing >=0.4.2 && <0.5- , polysemy >=1.3.0.0- , polysemy-plugin- , should-not-typecheck >=2.1.0 && <3- , syb >=0.7 && <0.8- , transformers >=0.5.2.0 && <0.6- if flag(corelint)- ghc-options: -dcore-lint -dsuppress-all- default-language: Haskell2010+ type: exitcode-stdio-1.0+ main-is: Main.hs+ build-tool-depends: hspec-discover:hspec-discover -any+ hs-source-dirs: test+ other-modules:+ BadSpec+ DoctestSpec+ ExampleSpec+ LegitimateTypeErrorSpec+ MultipleVarsSpec+ PluginSpec+ TypeErrors+ VDQSpec+ Paths_polysemy_plugin+ Build_doctests++ autogen-modules: Build_doctests+ default-language: Haskell2010+ default-extensions:+ DataKinds DeriveFunctor FlexibleContexts GADTs LambdaCase PolyKinds+ RankNTypes ScopedTypeVariables StandaloneDeriving TypeApplications+ TypeOperators TypeFamilies UnicodeSyntax++ ghc-options:+ -threaded -rtsopts -with-rtsopts=-N -fplugin=Polysemy.Plugin++ build-depends:+ base >=4.9 && <5,+ containers >=0.5 && <0.7,+ doctest >=0.16.0.1 && <0.17,+ ghc >=8.4.4 && <9,+ ghc-tcplugins-extra >=0.3 && <0.5,+ hspec >=2.6.0 && <3,+ inspection-testing >=0.4.2 && <0.5,+ polysemy >=1.3.0.0 && <1.5,+ polysemy-plugin -any,+ should-not-typecheck >=2.1.0 && <3,+ syb ==0.7.*,+ transformers >=0.5.2.0 && <0.6++ if flag(corelint)+ ghc-options: -dcore-lint -dsuppress-all
src/Polysemy/Plugin.hs view
@@ -62,43 +62,14 @@ ) where import Polysemy.Plugin.Fundep-#if __GLASGOW_HASKELL__ >= 810-import Polysemy.Plugin.Phases-import Data.Bool (bool)-#endif import GhcPlugins - ------------------------------------------------------------------------------ plugin :: Plugin plugin = defaultPlugin { tcPlugin = const $ Just fundepPlugin- , installCoreToDos = const installTodos #if __GLASGOW_HASKELL__ >= 806 , pluginRecompile = purePlugin #endif }---------------------------------------------------------------------------------#if __GLASGOW_HASKELL__ >= 810-polysemyInternal :: ModuleName-polysemyInternal = mkModuleName "Polysemy.Internal"-#endif---------------------------------------------------------------------------------installTodos :: [CoreToDo] -> CoreM [CoreToDo]-installTodos todos = do- dflags <- getDynFlags-- case optLevel dflags of- 0 -> pure todos- _ -> do-#if __GLASGOW_HASKELL__ >= 810- mods <- moduleSetElts <$> getVisibleOrphanMods- pure $ todos ++ bool []- (extraPhases dflags)- (any ((== polysemyInternal) . moduleName) mods)-#else- pure todos-#endif
− src/Polysemy/Plugin/Phases.hs
@@ -1,63 +0,0 @@-{-# LANGUAGE CPP #-}--module Polysemy.Plugin.Phases- ( extraPhases- ) where--import BasicTypes-import CoreMonad-import DynFlags--extraPhases :: DynFlags -> [CoreToDo]-extraPhases dflags =- [ CoreDoSpecialising- , simpl_phase 0 ["post-late-spec"] max_iter- , simpl_gently- , CoreDoStaticArgs- , CoreDoSpecialising- -- TODO(sandy): probably don't need this one- , simpl_phase 0 ["post-late-spec"] max_iter- , simpl_phases- , simpl_gently- ]-- where- option = flip gopt dflags- max_iter = maxSimplIterations dflags- rules_on = option Opt_DoLambdaEtaExpansion- phases = simplPhases dflags-- base_mode = SimplMode- { sm_phase = error "base_mode"- , sm_names = []-#if __GLASGOW_HASKELL__ >= 804- , sm_dflags = dflags-#endif- , sm_rules = option Opt_EnableRewriteRules- , sm_eta_expand = rules_on- , sm_inline = True- , sm_case_case = True- }-- simpl_phase phase names iter = CoreDoPasses- [ runWhen (phase `elem` strictnessBefore dflags) CoreDoStrictness- , CoreDoSimplify iter $- base_mode { sm_phase = Phase phase- , sm_names = names- }- , runMaybe (ruleCheck dflags) $ CoreDoRuleCheck $ Phase phase- ]-- simpl_gently = CoreDoSimplify max_iter $ base_mode- { sm_phase = InitialPhase- , sm_names = ["Gentle"]- , sm_rules = rules_on- , sm_inline = True- , sm_case_case = False- }-- simpl_phases = CoreDoPasses- [ simpl_phase phase ["main"] max_iter- | phase <- [phases, phases-1 .. 1]- ]-